I've used FTDI in a few projects before, but I just got done with my first PIC USB project using an 18f4458 (for the 12-bit ADCs). Here is my feedback based on that. I'll just mix up the good stuff and the bad stuff.
0) To use the built in USB, your crystal frequency needs to be a multiple of 4. That's because they need to divide and PLL the crystal frequency to be 98Mhz then back to 48Mhz for fast USB. Just something to be aware of. If it's not a multiple of 4 or you get the prescaler and PLL fuses wrong, the PIC will still work but USB won't.
1) The USB stack takes up a bunch of memory on the chip. Like 30% for some compilers. Make sure you take that into consideration when sizing the chip.
2) CDC (virtual serial port) is built into windows. You don't need any special drivers to make a virtual serial port on windows. What you do need is an .inf file that tells windows that the USB device with a specific VID/PID that just got plugged in is supposed to get a virtual serial port. I didn't totally get that when I started.
3) The PIC CDC serial port can run really fast. I mean like as fast as your terminal can handle it. Remembering the 1200baud days, I had to stop and make sure I really wanted to set hyperterminal to 921600. This means that an integrated USB solution will be able to dump out data, even using the CDC port, way faster than running UART->FTDI->USB. The other cool thing is that the PIC doesn't care what speed the terminal tried to connect to it on. It just does it. No speed matching problems.
4) If CDC isn't fast enough for you, you can always change your PIC code to support HID (which is also built into windows) or some custom deal which actually would require a driver to dump data REALLY fast.
5) The compiler manufactures have licenses on the USB stacks that aren't always the most hacker friendly, but some guys over at DangerousPrototyes actually developed a completely free and open source PIC USB stack from scratch. It's crazy. I haven't used it but it's supposedly stable, fully supports CDC and HID, and is actively developed.
6) Dealing with CDC on windows can be a little bit of a pain because of the necessity to create the port every time the device is plugged in. Windows REALLY doesn't like it when you reset the PIC while you have an active CDC connection. It just hangs the port till you disconnect and reconnect again with the port closed. An FTDI solution can stay connected while the PIC resets. You are screwed with both solutions though if you have the terminal open and unplug the USB. Not something you had to deal with using a real serial port.
So after all that's, whats my take on PIC USB? Well that depends on the project. The learning curve is a little higher, but not super bad. I got down on PIC USB for a while when I was starting, but now that I have a functional framework that I can reuse, I'm warming up. If your project only needs the capability of a standard serial port and you have no intention of using any of the other USB features like HID or mass storage, then FTDI is a really attractive solution. You literally don't need to learn anything new to code on the PIC with an FTDI hanging off it. Just send UART messages like normal and it saves a lot of space so you can use a cheaper chip from any of the PIC families. That said, PIC USB is really cool. USB has so many modes built in that it opens up a lot of options for high speed communications. In a way it's like adding in a CPLD instead of discrete logic. Discrete logic works, but with a CPLD you can always reconfigure it later with just a code change.
There ya go. 2cents.