I've made an animal model, which consists of two objects: eyes and a whole body. I decided to make them into one object. When I tried to do that with Ctrl + J one eye joined to the body and the other disappeared. What's the problem?
In essence when you join objects all Blender does is merge their meshes. If you have 4 objects selected, the last object you clicked will be the dominant Object (In Blender we call it 'Active') . This can have interesting (but probably undesired) effects if the dominant Object has a different modifier stack than the objects being added.
When you join two objects that have different Modifier stacks, the dominant object's modifier stack will be used, and the other modifier stacks are discarded. This is why you will lose the mirror modifier if the dominant object doesn't have a mirror. To remedy this you would need to apply the modifier on the 'joinees' first, or cut the dominant mesh in two and add a mirror modifier there.
To emphasize you could test this on a small scene, imagine I have 4 objects with all different modifier stacks
object_1 with modifiers (mirror, subsurf(level=2)) object_2 with modifiers (mirror, subsurf(level=4)) object_3 with modifiers (array modifier, subsurf(level=1)) object_4 with no modifiers
If I select in sequence,
object(1,2,3,4) , then all associated meshes are added to object 4's mesh, and because object 4 has no modifiers all modifiers are dropped.