I notice the OP was about 6 weeks ago and no one has commented on the first (and presumably main) query raised there. If it's any pointer towards a solution, I have exactly the same problem with the PE Micro PROG 12Z programming package, which I use with the BDM Multilink device.
My current project uses a 9S12XDT512, and the intention at the outset was to make a clear distinction between resident firmware and application software. The system is of the type that has extensive firmware, both low-level (direct hardware interface functions) and high-level (TCP/IP stack), which is common to all applications. This can be packaged up as a ROM Library, which is a very useful provision in CW. Actual operating software is 'bespoke', ie each app'n package is prepared for customers individually (quantity per customer typically 500-1000).
This project is my first experience with HCS12X (and HS12 anything), and with Code Warrior. It struck me at the outset that firmware installation would be a separate exercise from application software installation. The production people are keen on this idea too, as the production run of boards can be done and the boards tested with firmware installed, while the software guys are still producing the application package to run on it -- much like an RTOS. The PE Micro set-up, with the PROG 12Z package to handle dowloading to the board, seemed a good approach. I use BDM Multilink for experimenting and development, but we'll probably go for the Cyclone Pro for production.
So that's what we're doing, but like the OP, I cannot make the PROG 12Z programmer erase and re-write the application program code selectively. It insists on erasing everything, including the firmware in page $FF (0xC000 up), even though I select 'Erase Module' in the menu (a 'module' being a downloadable S-record file). The 'Erase Module' menu item seems to mean 'Bulk Erase Flash'.
This is clearly the same problem the OP has experienced. Perhaps my comments might shed some light on the cause, since evidently the same thing happens whether you're using CW IDE, or a separate programming utility.