Panel and all its descendants are naming containers, so this includes custom controls, repeats, tab panels, and the "include page" component, as well as some components in the Extension Library. The primary purpose of the naming container is to ensure uniqueness of the client ID (the value of the id attribute in the rendered markup), so for any given component, that ID is some indication of the hierarchy of naming containers that contain it. For example, "view:_id1:basicinfo:firstName" might be the client ID of an inputText inside a panel inside a top-level XPage... the deeper the hierarchy of naming containers, the longer the client ID will become.
Although Designer enforces uniqueness of the component ID for any given .xsp file (XPage or custom control), the ID technically only needs to be unique to each naming container. So, for example, if you had two separate panels on the same custom control, each panel could contain a separate component with the same ID, because each panel will generate a different client ID for its own descendant components. But because Designer prevents this behavior, you would only see it in action if the components are injected at runtime.