eval просто сбивает с толку, так что избавьтесь от него:
$ echo echo\ {a,b,c}\;
echo a; echo b; echo c;
$ echo echo\ {a,b,c} \;
echo a echo b echo c ;
Это должно сделать очевидным то, что происходит. В первом случае eval выполняет три разные эхо-команды. Во втором случае оценивается только одна команда, которая принимает в качестве аргумента строку 'a echo b echo c'.