It would be fair to say that I shouldn't be assuming /bin/sh is the symlink to bash that it should be

hence the syntax error for using bash constructs.
But the "no crontab for root" error is because it prints out the current crontab, echoes the new cron job, and installs the new crontab -- there is no "append this, please" mode.
You can check that by running `sudo crontab -l` to check the current crontab. It should be there.
...
I fixed that by piping the stderr for the initial crontab -l to /dev/null, and switching the instructions to use bash.