Interestingly, if you create the multibody with createMultiBody, rather a urdf, and set the baseVisualShapeIndex option to -1 to get the built in visual shape, the normals are correct. createMultiBodyLinks.py in examples\pybullet\examples is, well, a good example of this

I haven't had a chance to test the built-in spheres or cylinders, so don't know if they have the same issue or not. Also In the attached image the smaller cuboid on camera left, with correct normals, uses the mesh visual object and is loading a .obj.
-Jeff