Could you tell both PIC's compilation sizes ?

Maybe you could optimize your code by some labeling repetitive 'procedures' or 'functions'. Almost always something can be done
I've had that problem and modularization has been my solution
16F876 is to 18F252 as
16F877 is to 18F452