The reason is flexibility. You might have several different OSes on one hard disk (Windows, Linux, etc.), or you might have several different versions of the same OS. Therefore, it is better to have a OS-independed piece of code that knows where each OS installed on the hard disk resides, how to load each of them, which one to load, whether to present a menu or not, etc. This is a bootloader.
BIOS loads and executes code located in a pre-defined location on a hard disk (first sector). We call this code a bootloader, but technically if you installed Windows on a blank hard disk, this code is installed by Windows too, so you can call it part of Windows, especially since Windows bootloader cannot load any other OS besides Windows.
Regarding first software program that runs when a computer starts: the firmware/software distinction is pretty thin, and modern computer's startup process is very complicated. BIOS in itself is also not a monolithic program, but several distinct stages chained together. However, bootloader is the first user-changable code that runs. This is the first piece of code that the user can damage, erase, infect with a virus, etc. So I suppose while technically BIOS is the first software that runs, bootloader is first in a sense that if computer doesn't boot user needs to check whether it is ok.