To answer your first question, currently the CatalogPart gets a reference to its CatalogZoneBase and WebPartManager in CatalogZoneBase.CreateChildControls(). The CatalogZoneBase.CatalogParts property getter calls EnsureChildControls(). So, the reference to the CatalogZoneBase and WebPartManager should be called the first time the CatalogZoneBase Controls property or CatalogParts property is accessed.
For your second question, to set the DisplayMode to Catalog the following conditions must be true: Personalization is enabled, an authenticated user is browsing the page, and the page must contain a CatalogZoneBase. Are all of these true? If so, please post a repro.
http://blogs.msdn.com/mharderThis posting is provided "AS IS" with no warranties, and confers no rights.