Как я это понимаю, где-то могу быть неточен терминах. Есть два места где ББ хранит информацию, в стеках вызова процедур и в куче. Так что возврат аргументов массивов или записей будет использовать не кучу, а именно стек, и это плохо, тем что раздутие стека может легко привести к переполнению оперативной памяти. Особенно при рекурсивных алгоритмах. Поэтому тут язык провоцирует использовать хороший стиль повторного использования структур в RAM.