With the new cameraGeom, it's considered desirable that each camera be able to define the serialization format for its static camera data. Despite this, it's still the base CameraMapper that does loads it (at least for most cameras), going through a circuitous chain of policy files, obs_* package paths, and Python code.
It'd be vastly simpler for each mapper to simply build the Camera object and assign it to self.camera in its own __init__ method (most would simply delegate all the work to afw.cameraGeom.makeCameraFromPath). We could then remove all the camera entries from the PAF files and make it much easier to follow the logic.
Eventually, I think we need to be storing at least some components of the camera definition in the data repository (or something like a calibration repository associated with it), and that would require giving the mapper access to a partially-constructed butler when its time to build the camera. But we can save that for another day.