Se o valor de $FOO for uma única palavra que não contenha um caractere curinga \[*? , os dois serão idênticos.
Se $FOO não estiver atribuído ou estiver vazio ou se houver mais de uma palavra (ou seja, contiver espaço em branco ou $IFS ), a versão sem aspas será um erro de sintaxe. Se acontecer de ser apenas a seqüência correta de palavras (como 0 -eq 0 -o false ), o resultado pode ser arbitrário. Portanto, é uma boa prática sempre citar variáveis em scripts de shell.
Por acaso, "true" não precisa ser citado.