I have been researching about the reason why we have a second MCU in arduino UNO for a while now. finally i understood that its been use as USB to serial converter. the question that really bug me now, why is the boot-loader is burn on the main ATmega328 not Atmega16U2 ?
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.