Actually I'd say USB experimentation is easier with the Uno board. Changing the USB code of a 32U4-based board involves sacrificing the Arduino bootloader, in which case it's no longer an Arduino and cannot run Arduino sketches. It also means you have to merge your program
HUH? Not in my experience. Have you played with a Teensy board?
You don't have to modify the bootloader to use USB on a 32U4.
That is the beauty of having native USB in the AVR.
Once the application code (sketch) gets control, it can program the internal USB hardware directly.
When using the AVR chips with native USB the AVR sketch code (or its USB libraries) has control over the USB.
Interfacing with USB can easily be done with already existing libraries for a sketch just like any other hardware
for arduino.
When doing things like serial emulation over USB you can take advantage of the built in low level
flow control of USB. When the USB control is fragmented/split between multiple chips this is much more difficult
and requires some sort of software handshaking between the 328 and the 16U2 chips.
Not doing flow control can (and often does) mean loss of serial data can occur.
(Just look at all the issues in ArduinoISP)
When using an AVR with native USB support, everything is in the sketch and you don't have to
deal with partitioning functionality across multiple & different processors.
USB interfacing is doable using already written easy to use USB libraries.
It also means you do a single download using the IDE with a single sketch and don't have to mess with
programming any other chip or potentially trashing your USB to serial interface.
Like I said there are many things you can do when the main AVR code has control over the USB
device interface that are difficult or not possible when using a split model.
--- bill