Это просто ограничение синтаксиса PHP. Вы не можете индексировать возвращаемое значение функции, если функция возвращает массив. Там нет ничего плохого в вашей функции; скорее это показывает доморощенную природу PHP. Подобно мячу катамари, он со временем приобрел характер и синтаксис довольно случайным образом. Это не было продумано с самого начала, и это синтаксическое ограничение является доказательством этого.
Аналогично, даже эта более простая конструкция не работает:
// Syntax error
echo array("one", "two", "three")[0];
Чтобы обойти это, вы должны присвоить результат переменной, а затем индексировать переменную:
$array = get_arr();
echo $array[0];
Как ни странно, они правильно поняли предметы. get_obj()->prop
синтаксически действителен и работает как положено. Пойди разберись.