A diferença será se você estiver tentando alterar o ambiente do seu shell atual (por exemplo, definir um shell ou uma variável de ambiente). Por exemplo
$ cat test.sh
myVariable=foo
$ unset myVariable; source test.sh; echo ${myVariable:-null}
foo
$ unset myVariable; bash -s < test.sh; echo ${myVariable:-null}
null
É para isso que o source
: avalia um script no shell atual. Quando você inicia um novo processo bash, ele não pode alterar o ambiente do processo pai.