Кажется, смысла тут никакого нет - просто вот так исторически сложилось. C и C++ языки не очень молодые и предполагают работу практически на всех существующих архитектурах процессоров, по тому размер определяется реализацией.
В том же rust есть usize/isize, который тоже зависит от архитектуры.
Если нужно, чтобы размер типа был заранее известен - используй всякие int8_t, int32_t и так далее.