Quando há espaços em strings, o shell está interpretando estes como comandos separados. Você precisa encapsular o caminho entre aspas, então o shell sabe que é uma única unidade.
for file in "$(find /mnt/fs1/Shares/Software$/ISOs/ -name \*.iso)"; do ln -sf "/mnt/fs2/Shares/Images$/server/template/iso/$file;"
Eu tentei um comando semelhante no meu sistema, e uma maneira mais fácil de fazer isso seria
find /mnt/fs1/Shares/Software$/ISOs/ -name "*.iso" -exec ln -sf {} \;