After joining object is reverse
The problem is the way you are creating the transparent surface at the front of the eyeball. This works with a single eyeball object but the Generated output is no longer the same when the eyeball is joined to other objects.



I am not sure but I think Generated is using the bounding box of the object. Hopefully someone more experienced with using cycles Nodes will see this and can explain exactly why it gets messed up when joined and offer another solution, maybe UV unwrapping the eyeball and using the UV's output ?

In the meantime I would suggest you don't use the Texture Coordinate node, and instead make the front of the eyeball a separate material and give it a glossy transparent texture.