Actually, when you issue commands to the flash, more than one page 'disappears'. That means even if aren't actually programming the boot code, you can be one page down, the boot area is unavailable. However, other pages can be programmed fine. On the 128K part, I can programm the pages at 38-3B without worry, but if I try to program 3C through 3F I have to be careful.
And one thing you have to be careful about is interrupts. You vector table can 'go away'. Oops!!
Now, since you can only do some operations 'once' after a reset, you might want to consider doing your bootloader code with NO interrupts, expecially if you can't execute a reset after programming. It's neat to drop SRAM up top and just move your bootloader image to it as well as you vector table, and then execute from RAM. But then you have to hard reset when done to get back to how you may operate the platform live. On the other hand, you could do it with no ints, although that can be tedious.
Or... if you're willing to give up a flash area at C000 and use it as paged flash only, I suppose you could have your default runtime map of the system be SRAM up top, and have your boot code set up the system that way after setting up the RAM with a vector table in RAM. But then you're talking some serious management of resource issues...