Você deve ler o BashFAQ / 050, também conhecido como "Estou tentando colocar um comando em uma variável, mas os casos complexos sempre falham! .
Um TL; DR:
This fails because [...] the [...] quotes inside the variable are literal; not syntactical.
A divisão de palavras também é um problema ao tentar armazenar um comando em uma variável. Embora não seja com o seu exemplo imediato, isso é algo que se deve ter em mente.
Depois de ler #050
, você poderá reavaliar se realmente precisar fazer isso. Se você ainda acha que faz e decide desconsiderar o conselho, você vai querer armazenar seu comando em uma matriz:
cmd=( rsync -rlpuvz -e ssh "/www/${site}/" "${remote_host}:/www/${new_site}" --force --delete --exclude="site/web_sitemap_*.xml.gz" )
"${cmd[@]}"