Returning back to the actual topic: The PICkit3 hasn't been 100% reliable for me either. Sometimes, it needs a reset by unplugging/replugging the USB cable. But it's happening rarely, so it doesn't bother me too much. Whenever it has happened, the issue has always been communication being lost between MPLABX and the PICkit3, I've never encountered any kind of corruption or misprogramming.
as for XC8: yeah, the code it generates is bad (using the free version). But... it doesn't really matter, imo. If you run against the constraints because your code runs too slowly or doesn't fit into the flash, you can usually just increase the clock speed or use a PIC with more flash. If you're already using the biggest and fastest PIC, well, ARM's probably going to work out better for you, because the next firmware revision will need to have even more features.
As for the PIC downsides, realistically, they're true, but most of the time they don't matter. This little dev setup that Microchip built gives you a huge amount of flexibility, letting you work with everything from small 6-pin micros to 32bit chips, with no other investment than a PICkit3, which is cheap. The docs are excellent. The chips... well, most bugs are usually fixed by the 3rd or 4th silicon revision (I just wonder why I see the same old bugs all over again whenever they release a new chip...) And there are faster chips out there, and ones that are easier to program in ASM. But usually you don't have quite the same selection of different parts, which might lead to having to use a bigger package than you really need for example. And most other setups don't have quite the same ease of use (unless you wan't to step into Arduino-land.) What I'm saying is, there's tradeoffs at every corner, I haven't found the perfect ecosystem yet. PICs are pretty nice, not exactly the holy grail, but not rubbish either. I enjoy using them.