PIC EEPROM after re-programming
'Preserve EEPROM' suggests EEPROM content is not changed when chip is reprogrammed. I am not sure if it means the memory is not touched at all during the process. I might involve Pickit reading the data EEPROM, erasing the whole chip, programming the chip, then writing the data EEPROM with the old values.

If you are using Programmer-to-Go mode of Pickit, preserving EEPROM may not work like this.

If you have the CPD (Data EEPROM code-protected) fuse set, then Pickit can't read the EEPROM. You can work around this with 'Erase Configuration Bits' command.

Also a discussion at Microchip suggested that 'Erase all before programming' option overrides the 'Preserve EEPROM' setting.