Результат подстановки команд становится списком путем разделения на строки новой строки (технически содержимое $IFS, но изменение IFS не рекомендуется).
Таким образом, вы можете заменить пробелы новыми символами, возможно, с помощью tr:
function testArray
echo 1 2 3 4
end
set r (testArray | tr ' ' \n)
echo $r[2]
Или измените функцию, чтобы сразу выводить строки новой строки:
function testArray
echo \n1\n2\n3\n4
end
set r (testArray)
echo $r[2]