deal.II keeps the entire coarse mesh on every processor, but of course we cannot do that with the actual mesh after many refinement steps. It is true that this somewhat limits the size of problems we can solve to maybe a few hundred thousand coarse mesh cells on typically-sized cluster nodes. However, this is plenty for most realistic cases for a reasonable coarse approximation of the geometry. Adaptive mesh refinement can then resolve the details -- and for the refined mesh you can go about as far as you want, we have done meshes with several billion cells.
As far as load balancing is concerned, yes, we do that after every refinement/coarsening step. It turns out that this is not an operation that requires a noticeable fraction of the overall run time of programs, even on large numbers of processors.
I admit that I do not know whether the observations above are true for other libraries. The authors of these libraries need to speak for their own products.