Looks like this was a PEBKAC, should have used qcronsub and not cronsub. Thanks to Sumurai8 for spotting that and suggesting ways to debug if the problem continues!
It appears that qcronsub doesn't allow me to specify all options in the shell script, though. If I specify virtual_free using #$ -l virtual_free=xxM I get this error:
nettrom@willow:~$ qcronsub SuggestBot/opentask/opentasks-nettrom.sh
Unable to run job: attribute "virtual_free" is not a memory value.
Instead I have to specify it as a command line option to qcronsub. Feature or a bug?