Evitar citações é desejável quando queremos que o shell pense "oh, estes são todos elementos separados, não um todo!". Tal coisa pode ser bastante útil com arrays.
bash-4.3$ var="one two three"
bash-4.3$ arr=( $var )
bash-4.3$ for i in "${arr[@]}"; do echo "$i"; done
one
two
three
Em particular, isso é útil quando você está gerando uma matriz como no exemplo acima. Eu pessoalmente usei essa abordagem ao enumerar endereços reais dos espaços de trabalho do Ubuntu (a terminologia exata é viewports, e eles usam formato de coordenadas como X, y, mas isso é muito diferente).
Outra abordagem é quando você está dando a variável para outro comando que precisa processá-los como itens separados. Comparar:
bash-4.3$ bash -c 'for item; do echo $item; done' sh "$var"
one two three
bash-4.3$ bash -c 'for item; do echo $item; done' sh $var
one
two
three
Para abordar o que foi mencionado nos comentários, esses exemplos não devem ser usados com "entrada inesperada", e sim com ambiente controlado. Além disso, set noglob
pode ser usado se a globalização tiver que ser evitada, mas novamente - se você estiver gerando uma matriz para determinadas combinações de strings como valores numéricos de viewports de desktop, não há nenhum perigo de glog
. Se você está lidando com a entrada real do usuário, então aspas devem ser usadas, e este não é o tópico desta questão.