Why the bootloader burn on ATmega328 rather than Atmega16U2 in Arduino Uno
The purpose of the bootloader is to get the firmware through the serial
port and burn it into the flash. The 16U2 has no access to the 328's
flash. The job has to be done in the 328 itself.