Here is a scenario under which the assert is invalid:
RecvHideEvent is received on a DocAccessibleParent DAP1 that has a child document DAP2... that in turn has a child document DAP3. DAP1::RecvHideEvent calls Shutdown on its root ProxyAccessible. This recursively calls Shutdown on child ProxyAccessibles until it reaches the one that is the parent of the child document DAP2. ProxyAccessibleBase::Shutdown then attempts to Unbind DAP2, which calls DAP1::RemoveChildDoc, which trips the assert because DAP2 has child document DAP3.