Одна из возможных причин может заключаться в упрощении выравнивания. Если вы поместите локальную переменную в стек, которая должна быть размещена на 4-байтной границе, вы можете просто вычесть размер объекта из указателя стека и затем обнулить два нижних бита, чтобы получить правильно выровненный адрес. Если стек растет вверх, то выравнивание становится немного сложнее.