If you look at the ISA for the PICs before the MIPS based parts, you will see a giant WTF in regards to how C is implemented on those processors. You get abstracted away from it with the available commercial compilers, but there is a lot of stuff you can do in a regular machine that you can’t do in a PIC.
This is one reason I like the MSP430s. Completely orthogonal, code can run from RAM, no program space (LPM) hacks needed as in the AVR.
With the increasing popularity of CortexM3 and now M0, which all share a common toolchain and even standardized peripheral interface (CMSIS), I’m surprised people put up with anything else
Personally, I use the MSP430 which is a great line overall, the AVRs due to certain peripherals, and the AVR32 as its faster at certain operations. Everything else gets relegated to a CortexM3 (STM32 or LPC17xx)