Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Oi Pedro, tudo bem? Pelo que entendi, é a forma como o puts imprime a interpolação do objeto dentro da string.
1 - Quando você imprime diretamente a variável, ele usa o método to_s do objeto, que a implementação é: imprimir os valores do vetor.
Quando você interpola, aparementemente, o método usado é o inspect do objeto, por isso aparece os colchetes que representam o vetor.
2 - Justo por que a quebra de linha é um caracter universal, assim como a volta para o começo da linha, representado por \n\r, que não é impresso no terminal, mas é interpretado.