Sounds like you are doing all the right things, but I wonder if your expectations are for automatic shader translation (which does not happen).
When caching to XMesh, we save a MAT library for 3ds Max with the actual materials in it, and can reassign them automatically to the XMesh Loader if you execute the MS MAXScript file created by XMesh.
However, for Maya we only create a text file which lists the names of the ShadingGroups corresponding to the MaterialIDs stored in the XMesh. So when I load an XMesh in Maya, I get only a default Lambert shader for all polygons. But if I go into the Hypershade editor, select “Rendering” menu and pick “Show ShadingGroups”, it shows me all ShadingGroups with names matching the Material names in 3ds Max. Now I can go one by one, break the connection to the default Lambert shader, and reconnect each ShadingGroup to a new Shader set to represent the look of the respective 3ds Max material. It is a bit cumbersome, but it works for me…
At some point, I had written a prototype script to try and convert typical 3ds Max materials (standard, mental ray and V-Ray) to corresponding Maya Shaders. But it was quite tricky to get it right, so I abandoned that attempt. However, V-Ray seems to have a workflow for bringing materials over, I just have not tested that.