El problema no son los FUSES y/o como se generan. Por mi tambien iria a MPLAB X, pero hay gente que siente que MPLAB X es lento y lo entiendo. Tambien que C18 le permite usar las optimizaciones, asi que tambien los entiendo.
El problema esta en que el quiere incluir solo un archivo cabecera para todos los archivos .c que tenga Y es ahi donde el comete el error ya que al estar incluido en todos se definen los FUSES en todos los .c que agregue, por eso utilizo el define para solo limitarlo al main.c. Tambien podria haber realizado un archivo extra con solo los FUSES, pero esto va en contra de lo que intenta. Personalmente el main de un proyecto un poco mas complejo estaria libre de cualquier acceso al hardware. Y solo haria acceso al hardware a traves de algun/os archivos port, que es alli donde incluiria nomas lo del micro.
Tambien pienso que para un proyecto muy pequeño es posible lo que intenta, pero al hacer un proyecto mas grande, implica que todos los .c tengan los .h de TODAS las librerias, y eso lo veo un poco absurdo, por poner un ejemplo, tenes un archivo que maneja lee archivos de una SD con FATfs, y un archivo que maneja una memoria flash, porque en el archivo de memoria flash vas a incluir todos los .h de fatfs, sd, etc. El auto completar del IDE se va a volver loco y va a presentar todas las opciones en ves de unicamente las necesarias.