After further playing with Blender and the SMD exporter, it’s apparant there are a few problems. One was the lack of physics object exporting, but that was fixed by making all objects smooth. The big problem however is the script fails to take into account object orientation - i.e. if your mesh object has been rotated around any axis, the resulting normals in the SMD will be incorrect, or something. This messes up the shadows. The solution has been to set all objects back to a rotation of (0, 0, 0) and then rotate the mesh to fit the original shape.

I am looking into correcting (?) the exporter to account for this, but for now at least that’s the problem identified. The SMD exporter has proved invaluable already - hopefully once the exporter is more mature XSI won’t be needed at all (at least for inanimate props)…

Update: smd_export.py’s author Pelle Johnsen has since updated the script to account for object rotation. It is available here. Top bloke.