I would have expected it to be the opposite to be honest. In Cortex/Gaffer we don't distinguish between a transform location and a shape location. All locations have a transform and can optionally have a shape (object). Looking at your example abc, it seems you've exported what we call PrimitiveVariables rather than Attributes. In Cortex/Gaffer the distinction is important. An attribute is a property of a location, while PrimitiveVariables are related to the topology of an object. Some nodes in Gaffer only operate on PrimitiveVariables and some only operate on Attributes. Since all of your custom PrimitiveVariables in the example are Constant (one value for the entire shape as opposed to one value per vertex/face/face-vertex), it would be preferable if you could export those as Xform attributes instead.
In the translation layer, we interpret Xform User Properties as Cortex/Gaffer Attributes, and we interpret shape ArbGeomParams as PrimitiveVariables. I'm not too familiar with debugging Alembics, but using abcecho on your example file, it seems we are interpreting the data correctly, in that the myColor/myDiffuse/mtlName properties are listed as arbGeomParams within the PolyMesh schema, while all of the Xform schemas are listing empty userProperties.
> I exported a vector attribute called myColor which I tried using in an arnold shader network via oslIn... I get the same error when I try to use a float attribute
I think there are a couple problems. First is that both PrimitiveVariables are doubles (V3dVectorData and DoubleVectorData), whereas I think our OSL ShadingEngine only supports floats (V3fVectorData or FloatVectorData). There is a special case to convert double->float in the code, but if I'm reading it correctly, it doesn't work for VectorData currently. So if you could export float data (IV3fGeomParam) instead, that might just work.
It is a bit odd that these variables are VectorData in the first place, since they are each a single Constant value. Was that intentional to make then arrays/vectors? Or could that be a bug in our translator? I did noticed we have a test that is explicitly guaranteeing a Constant IntVectorData PrimitiveVarible, so I'd have to check on the history a bit to understand why we're doing that. Maybe there just isn't a good way to export non-vector data from Maya?