Yes empty containers can remain after docking operations. The reason we do that is that they keep track of a "breadcrumb" we can use to restore a docking window back to its exact location for a particular state. Once a container is no longer needed, it will be removed.
For instance if a container only has one breadcrumb and that related docking window is either destroyed (removed from the DockSite altogether) or moved elsewhere in the same state, the breadcrumb is no longer necessary and the container is then removed.
This is all by design and allows docking windows to be restored precisely to previous states.