O motivo é a flexibilidade. Você pode ter vários sistemas operacionais diferentes em um disco rígido (Windows, Linux etc.) ou várias versões diferentes do mesmo sistema operacional. Portanto, é melhor ter um trecho de código independente do SO que saiba onde reside cada SO instalado no disco rígido, como carregar cada um deles, qual carregar, se deve apresentar um menu ou não, etc. um carregador de inicialização.
O BIOS carrega e executa o código localizado em um local predefinido em um disco rígido (primeiro setor). Chamamos esse código de carregador de inicialização, mas tecnicamente, se você instalou o Windows em um disco rígido vazio, esse código também é instalado pelo Windows, para que você possa chamá-lo de parte do Windows, especialmente porque o carregador de inicialização do Windows não pode carregar nenhum outro SO além do Windows.
Em relação ao primeiro programa de software que é executado quando um computador é iniciado: a distinção entre firmware / software é muito pequena e o processo de inicialização do computador moderno é muito complicado. O BIOS em si também não é um programa monolítico, mas vários estágios distintos encadeados. No entanto, o gerenciador de inicialização é o primeiro código que pode ser alterado pelo usuário . Este é o primeiro código que o usuário pode danificar, apagar, infectar com um vírus, etc. Então, suponho que, tecnicamente, o BIOS seja o primeiro software executado, o gerenciador de inicialização seja o primeiro, no sentido de que, se o computador não inicializar, o usuário precisará para verificar se está ok.