I have done both USB and Ethernet in my designs.
I previously used the Cypress EZ-USB SX2 series. They were extremely easy to interface to on the FPGA side. We did it with and without the NIOS (the NIOS was obviously much easier). Basically the chip just looks like a FIFO that you write to / read from. It seems like we were able to get around 300Mbps without doing anything special.
For the PC-side driver, we modified Microsofts bulksys driver to meet our needs. For Linux, we wrote our own driver but we were able to use libUSB both on Linux and Windows. If I had to write a driver again, I'd go the libUSB route.
Apparently the FTDI USB chips must be very easy to work with because it seems like everybody is using them now. They provide a driver for you but I've noticed that you can't have more than one device on a machine that uses that driver. Also they only support 12Mbps.
There are some advantages to using USB. USB can be done with a minor amount of buffering and the FPGA-side driver is light and fast. Implementing the TCP/IP stack for Ethernet is a huge overhead burden. It requires a lot of processing power and a lot of buffer memory. In my USB designs, I was able to run the entire operating system for the NIOS out of onchip memory within the Stratix II. With ethernet, I need external memory to accomodate the TCP/IP stack.
The downsides to USB are that it has limited connectivity (length, point-to-point) and you have to write everything pretty much yourself. You don't get to take advantage of the existing software and hardware that are built around TCP/IP. Ethernet is nice because you don't have to write any of the low-level stuff.
Jake