Hi Tim
Interrupts need to be disabled when programming Flash if they run in Flash. If you can put the interrupt routine in SRAM you won't need to disable interrupts when programming and so won't lose UART data (due to rx overruns).
It is often not very practical to put large amounts of code in SRAM so you may need to reduce the Baud rate used so that there is no overrun during each programming operation.
Make sure that the disable/enable interrupt is not placed around the complete block call but only around the actual programming operation (block programming of 512 bytes will take several ms whereas each individual programming operation will be taking about 100us to complete). It should be possible to work with a Baud rate of up 38'400 without underruns during programming.
Since sector deletes take longer, deleting should be avoided during UART activity if at all possible, if the interrupts cannot be relocated to SRAM.
This is a 'normal' restriction of these devices.
Regards
Mark
P.S. If you can use a flow control protocol (XON/XOFF or RTS/CTS) on the line you can also stop the remote transmitter from sending any data while programming/deleting.
http://www.utasker.com/kinetis.html