Потому что оптимально всегда возвращать запись и массив по ссылке (через VAR, OUT-параметры).
Через стек копировать - неоптимально.

Языки, которые позволяют такое, потом вынуждены заниматься оптимизацией (реально return гнать через связывание адресов какое-то при вызове). Что есть корявое нагромождение, ради непонятно каких выгод.

Да, на 64-битной архитектуре скопировать небольшую запись или даже строку (до 128 байт) может быть чуть быстрее, чем сходить по ссылке.

В стиле кодирования в моей команде я ввёл подчёркивание выходных и VAR-параметров в точке вызова. Очень легко читается тогда, что меняет вызов, а что принимает как вход.