You don't need a hardware programmer to reprogram the 8U2/16U2: they have a bootloader. (It's also possible to use the second Arduino as a programmer, but note that the connection diagrams there are for reprogramming the main microcontroller, not the U2.)
However, I don't know if the firmware is compatible across hardware versions.
However, I don't know if the firmware is compatible across hardware versions.