типа живут на стеке, а наследник больше памяти может занимать. В итоге не получается равномерно выделить память под ячейки массива
Не, причины дизайна другие были. Да и struct физически может быть частью экземпляра класса, аллоцированного в куче, тогда и struct тоже в куче :) просто конечно когда мы явно создаем struct, то конечно она аллоцируется на стеке, но говорить что struct всегда аллоцируется на стеке-неверно