I checked the problem and it is caused because when f:facet contains more than one child, facelets algorithm create a panel that is not backed by any facelet tag, but it has ComponentSupport.FACET_CREATED_UIPANEL_MARKER to recognize it. Since it does not have ComponentSupport.MARK_CREATED associated, that panel is marked to remove, but it should not.
The fix is just check that case on PostAddPreRemoveFromViewListener. It took me some time to figure it out, but now it should work.
Thanks a lot for the test and the interest to check these cases, it is a very valuable contribution.