Isso ocorre porque no segundo caso, você está rsyncing o conteúdo de /e/
e o padrão de filtro está enraizado lá, não um nível acima. Então, você precisa remover isso da sua exclusão:
rsync -a --exclude=/garbage /e/ /dest/e
Quando faço algo como
rsync -a --exclude=/e/garbage /e /dest
a exclusão funciona, mas com
rsync -a --exclude=/e/garbage /e/ /dest/e
isso não acontece. Estou usando a versão 30 do protocolo versão 3.0.7 no cygwin, caso isso seja importante.
Tags rsync