What is the purpose of a microcontroller bootloader?
The main purpose of a bootloader is to allow updating the firmware through interfaces other than the default hardware interface. For example, this allows updates via communication channels that the application uses otherwise for its own purposes, which means that you can do remote in-system updates without requiring physical intervention at the remote site.

Once you have this capability, you need zero additional hardware, which makes it the method with the lowest recurring cost, and this is why hobbyist systems like Arduino use it. It also provides a small amount of marketing lock-in, because now you need to buy your AVR chips with the bootloader already programmed into them.