Use the PBP software solution for one the functions. Both work well, especially with a fast clock rate (which is likely since you are proabably using the 4550's usb, and if you not, other alternative PICs are a better choice).

For what it's worth, when faced with a similar choice, I used the software SPI and hardware Serial. This allowed me to create an interrupt driven serial buffer for RX. I can recieve data packets "in the background" and then process the data in my main loop as needed. I also "hacked" the PBP SHIFTOUT macro to remove a bunch of 'needless' (in my case) delays (nop and goto $ + 2 commands), increasing the data output rate.

HTH,
Steve