Uggghhh... where do we start on this one.... try twice (or more) the Program Memory, ability to run from internal oscillators (which 16F87X series does not have), and ability to run up to 40MHz just for starters.

Doing away with an external oscillator has heaps of advantages... not having to buy an xtal or resonator is just one of them. 20 cents does not seem like much until you multiply it up by a 10,000 production run and the time saving in not soldering that part in. Having just one or two extra I/O lines for example is actually a major bonus. There's a big jump from a 28-pin PIC (eg 16F876) which only has 22 I/O's to the next size up (16F877)... that 40-pin DIP package is a waste of valuable real-estate in many cases.

1.5kb of on-chip RAM makes the 16F877's 368 bytes a little small. This means you can now read and write decent sector sizes in real-time to Floppy and Hard disks.

With more versatile programmable code protection, you can use an external EEPROM to load program overlays into your codespace... this means you can have a complex program taking up most of your Progam Code, then overlay a completely new program for little used options such as Set-Up menus or field update programming. Using techniques like this, suddenly you have a PIC with 250kb or more of Program codespace...

In many cases there's extra hardware in the box too...

With regard to programming, it depends what you want to do. You need to download and install MPLab's MPASM assembler, since you can't use PBP's PM Assembler. Setting the Configuration Fuses becomes a little more complex (as there's heaps of them). Other than that, life is good.

On the flip side, there is one major dissadvantage... you have to be a bit more professional with your board layouts and overall circuit design as these devices are more susceptible to noise. As with all things... the more complex you make it, the greater the chance that some oddity will crop up to spoil your day.