O problema é que você precisa citar os nomes dos arquivos, mas você não pode fazer tudo isso usando strings porque ele passará todos os nomes de arquivos para rsync como uma string longa com aspas dentro da string (e não o arquivo individual parâmetros de string).
A variável $ @ é um array no Bash. Você precisa convertê-lo em uma nova matriz ao enviar para o rsync.
LOCATION="/media/WD100/"
all_files=()
for file in "$@"; do
all_files+=(":\"$LOCATION$file\"")
done
rsync --progress --inplace --append-verify -ave ssh username@homeserver"${all_files[@]}" .