For anyone else who is still stuck with why some of the children in their prefab keep unparenting, the solution can be found here.
In short, the physics system will unparent objects with colliders on them. To work around this you will need to add a PhysicsBody component to the root object of your prefab (you can change the type to static if it doesn’t need to move using physics), then change all of the colliders in the prefab’s children to PhysicsShape components. These two components can be found in the Unity Physics package samples.