La razón es la flexibilidad. Es posible que tenga varios sistemas operativos diferentes en un disco duro (Windows, Linux, etc.), o puede tener varias versiones diferentes del mismo sistema operativo. Por lo tanto, es mejor tener un código independiente del sistema operativo que sepa dónde reside cada sistema operativo instalado en el disco duro, cómo cargar cada uno de ellos, cuál cargar, si presentar un menú o no, etc. Esto es Un gestor de arranque.
El BIOS carga y ejecuta el código ubicado en una ubicación predefinida en un disco duro (primer sector). Llamamos a este código un gestor de arranque, pero técnicamente si instaló Windows en un disco duro en blanco, este código también lo instala Windows, por lo que puede llamarlo parte de Windows, especialmente porque el gestor de arranque de Windows no puede cargar ningún otro sistema operativo además de Windows.
Con respecto al primer programa de software que se ejecuta cuando se inicia una computadora: la distinción firmware / software es bastante delgada, y el proceso de inicio de la computadora moderna es muy complicado. El BIOS en sí mismo tampoco es un programa monolítico, sino varias etapas distintas encadenadas. Sin embargo, el gestor de arranque es el primer código que se puede cambiar por el usuario que se ejecuta. Esta es la primera pieza de código que el usuario puede dañar, borrar, infectar con un virus, etc. Por lo tanto, supongo que aunque técnicamente el BIOS es el primer software que se ejecuta, el gestor de arranque es el primero en el sentido de que si la computadora no inicia el usuario necesita para verificar si está bien.