If you are doing this as a professional job, and the client is offering to pay for the compiler, then your best option by far is to use the XC8 PRO compiler. It's actually inexpensive as far as professional grade compilers go, less than when it was Hi-tech. You get free updates for life. The XC8 compiler will generally produce tight code. However, you should be in the habit of inspecting the output regardless of the compiler you use. Your client is offering to pay for the compiler because they want a stable platform with predictable behavior. It's worth it to them. And if you are stuck with a particular PIC part and can't easily switch it out, then it pays to have a compiler that generates tight code.
My main gripe about the XC8 compiler is that it doesn't support inline functions, which can be very helpful in controlling stack depth on these tiny PIC16 stacks. The workaround is to use macros, but that's an imperfect solution.
For the PIC18 series, I recently used C18 instead of XC8, because XC8 is new, and the applications libraries are not yet ported. C18 worked fine, but XC8 produced tighter code, and has better error reporting.
When comparing a compilers, consider how the vendor manages regression testing and releases, tracks bugs and fixes, etc. Some compilers such as CCS are very nice but fail in those areas.