the main disadvantage is that you have less code memory, since i's used by bootloader routines.
The main advantage is the easiest form to program your chip.
A bootloader is resident in the design at all times. Most likely stored in ROM. On power up it will execute and load the actual program you want to run then execute it. It serves as the device drivers needed to access outside data storage. With a small system with its probably not necessary anymore. But with larger systems, you don't want to recompile all the bios all the time. So large systems - Use boot loader, Small systems- just include it in the OS.