Raspberry Pi USB-to-Serial Atmega328
The standard Raspberry Pi distributions have FTDI driver support so you can use a USB to serial adapter based on FTDI chipsets. In fact FTDI have released a few products specifically marketed for use with the Raspberry Pi:

http://www.ftdichip.com/Products/Cables/RPi.htm

http://www.ftdichip.com/Products/Modules/RPi.htm

You could also purchase their chip level devices to roll your own custom solution if you prefer. There is also some information on supported USB to serial adapters here, Prolific PL2303 based devices are also listed as supported:

http://elinux.org/RPi_VerifiedPeripherals#USB_UART_and_USB_to_Serial_.28RS-232.29_adapters

I noticed you have already mentioned a GPIO based solution and a similar FTDI based system. Those are really about the only two options, converting USB to serial is quite complex and certainly the most practical path is a dedicated chipset.

To gain some additional serial lines over the GPIO port you could also use a technique called 'bit banging' to toggle an I/O line to transmit data and write something to decode the incoming serial data on another GPIO line. However that would normally require the use of a hardware timer for reliable operation so I believe you would need to write your own kernel drivers. From user code you may be able to use standard timers but given that Linux is not a real-time operating system in the true sense I doubt that would work 100% reliably, especially at higher baud rates.