Hola
El error está en la comprensión de los arreglos de chars, te recomiendo que leas este tema...
Tutorial - Cadenas y arreglos de chars
http://www.todopic.com.ar/foros/index.php?topic=25785.0Write_eeprom sirve para guardar datos de 8 bits en la eeprom interna del pic, no para guardar cadenas.
Cuando tú haces esto...
write_eeprom(dirEeprom,mensaje1);
... en realidad el dato que se está guardando es la dirección ram de 9 bits del primer char del arreglo mensaje1, pero recuerda que la eeprom interna tiene datos de 8 bits, por lo que estás perdiendo uno.
Después al querer recuperar la dirección ram del mensaje1 solo recuperarás 8 de 9 bits. Por suerte los mensajes 1 y 3 no requieren del bit perdido para ser recuperados pero los otros mensajes apuntan a direcciones de memoria desconocidas.
Ese es el problema que encuentro a tu programa, como recomendación deberías estudiar ensamblador para poder dominar el lenguaje C o reforzar tus conocimientos de cadenas.