Primeiro erro (→ Q2): IFS='\n' define IFS para os dois caracteres \ e n . Para definir IFS para uma nova linha, use IFS=$'\n' .
Segundo erro: para definir uma variável como um valor de matriz, você precisa de parênteses em torno dos elementos: array_of_lines=(foo bar) .
Isso funcionaria:
IFS=$'\n' array_of_lines=($(my_command))
Mas eu recomendo não mexer com IFS ; em vez disso, use o sinalizador de expansão f para dividir em novas linhas (→ Q1):
array_of_lines=("${(@f)$(my_command)}")
O valor de IFS não importa lá. Eu suspeito que você usou um comando que divide em IFS para imprimir $array_of_lines em seus testes (→ Q3).