Strategies for managing code size - PIC18 XC8
I've done some looking around and here are the tips I can find


Write better code. Code size and speed must be considered at each step of the way. 
C compiler/linker will only use the functions you actually use. So just including a .h should not increase code size (much)
Standard functions are however often more generic than you require. It is possible to write smaller versions that only do what you required
Shared strings as per @BrianK's answer


Then there are some alternatives that don't address the core issue of code size but may need to be considered if all else fails


Use a PIC with more space
Use an optimising compiler, e.g. MPLAB Pro 
Use assembler for some or all of the code


I would still like an easy way of seeing which functions and included functions are using the most space. I'll update here if I find an easy way to do so.