Tem a ver com o que a CPU pode resolver facilmente. Por exemplo, em um processador x86, há um eax
(32 bits), ax
(16 bits) e um ah
(8 bits), mas nenhum registro de bit único. Portanto, para usar um único bit, a CPU precisará fazer uma leitura / modificação / gravação para alterar o valor. Se estiver armazenado como um byte, uma única leitura ou gravação poderá ser usada para inspecionar / alterar o valor.
Além disso, pode-se perguntar se seria melhor usar um único bit versus um byte completo, afinal um byte estará desperdiçando 7 bits. A menos que o espaço seja uma restrição que se deve procurar pelo byte, porque, pelo menos o x86 e acho que outros, geralmente há instruções para definir / limpar rapidamente um bool muito mais rápido que a leitura / modificação / gravação de um único bit . Em medições pessoais, vi o método de leitura / modificação / gravação ser 5 vezes mais lento que o método de instrução única.