С точки зрения ассемблера - удобнее делать операции над целым числом (DWORD) 32bit. Он - же int.
В масштабах современной памяти - безразлично выделять 1 байт или 4 байта. Все равно
другие структуры больше захватят тысячекратно. А простота компилируемого кода - здесь важнее.
Вот поэтому компилляторы и собирают boolean в int. А язык С++ позволяет проводить аналогии
между int и boolean. В зависимости от контекста число может быть как числом так и логической
величиной. (Тесная связь с ассемблером да).
А если речь допустим идет о массиве boolean - тогда смысл в экономии есть. В Java например
такой массив действительно будет использовать биты внутри байта.
В базах данных например (Oracle) вообще нет булевого типа с точки зрения хранения. Там предлагают
символьный тип 'Y' или 'N'. Это связано с дисковыми структурами хранения данных в datarow.
Поэтому sizeof(булевый тип) будет всегда парадоксом в разных системах программирования и языках.
Как компиллятору удобнее так и соберет.