But then that would run ls inside of bash inside of the system shell (/bin/sh), wouldn't it? What's the point?
-c's argument is parsed by the shell so one gets full expansion. Further, if there are arguments after the string, they are assigned to the positional parameters, so that