Parece ser que mplab reconoce cada valor de #rom como un dato de 16 bits, y por eso introduce el byte nulo, según deduzco de lo siguiente que encontré en el foro de CCS.
The problem you are having is because of the relationship between the output file, and the actual _word_ layout in the PIC. The PIC18 is a 16bit processor. The two successive bytes in the output file, actually correspond to the top and bottom bytes of a single output _word_. The #rom directive allows you to write words. Hence to put the values so that they appear in the successive output file locations, requires the definitions to be reformatted into words instead of bytes. Hence:
#ROM 0xF00000={0x0201,0x0403}
will put the four characters into the successive output locations.
Ahora la pregunta es:
¿Existe alguna opción en MPlab, similar a la que tiene WinPIC800, para que los valores de #rom se interpreten como datos de 8 bits.
Si no existe me va a tocar reescribir un montón de código.