Очевидно, что разное программное обеспечение должно работать с данными / переменными разных типов и размеров, и часто возникает необходимость оперировать несколькими разными в одном и том же коде.
Возможность доступа к этим переменным напрямую и в целом, независимо от размера, упрощает программирование, поскольку вам не нужно склеивать, скажем, 4 8-битных байта, чтобы сформировать 32-битное значение или аналогичным образом извлечь отдельное 8. -битные значения из 32-битной ячейки памяти.
Существуют процессоры, которые не очень гибки с точки зрения изначально поддерживаемых размеров данных. Например, цифровые сигнальные процессоры с фиксированной точкой. Некоторые могут напрямую обращаться к памяти только как 16-битные слова и 32-битные двойные слова. Я думаю, что отсутствие 8-битной байтовой адресации в них не является большой проблемой, потому что ожидается, что они будут выполнять большую часть обработки сигнала, а не универсальны и подходят для вычислений общего назначения, а выборки сигналов редко бывают 8-битными. (это слишком грубо), чаще всего они 16-битные.
Поддержка меньшего размера данных и других функций в аппаратном обеспечении делает это оборудование более простым и дешевым (в том числе с точки зрения потребляемой энергии), что становится важным, если речь идет о тысячах и миллионах устройств.
Разные проблемы требуют разных решений, отсюда и разнообразие.