Right now the XP_MACOSX hack in nsDeviceContext::BeginPage causes us to create a new PrintTargetCG for each print page. This breaks the usual semantics and usage of PrintTarget and makes the printing code harder to reason about. It also makes it harder to create instances of PrintTarget other than PrintTargetCG where we really want all the pages to end up together, such as if we want to use PrintTargetPDF. Se should really stop creating new PrintTarget instances and instead have PrintTargetCG manage the PMSessionGetCGGraphicsContext calls to get a new CGContextRef for each page as appropriate.
I fixed this in bug 1309272's "part 5" patch.