Resposta curta: veja BashFAQ # 50 ("Estou tentando colocar um comando em uma variável, mas o casos complexos sempre falham! ").
Resposta longa: Colocar comandos (ou partes de comandos) em variáveis e depois recuperá-las intactas é complicado. Quando o shell expande uma variável na linha de comando, se a variável estiver entre aspas duplas, ela não será analisada; se não estiver entre aspas, os espaços serão analisados como quebras de argumentos, mas aspas e escape não serão analisadas. Em ambos os casos, colocar aspas no valor da variável não faz nada útil.
Geralmente, a melhor maneira de fazer esse tipo de coisa é usar uma matriz em vez de uma simples variável de texto:
FLAGS=(--archive --exclude="foo bar.txt")
rsync "${FLAGS[@]}" dir1 dir2