Eu sempre faria um cron job, porque:
- É onde os administradores de sistema esperam que esteja (este ponto não deve ser subestimado)
- crontab é à prova de balas, testado pelo tempo, extremamente usado e compreendido
- Você pode direcionar/analisar livremente mensagens de erro/sucesso para onde quiser
- Algumas tarefas de banco de dados requerem/preferem que o mysql esteja off-line (por exemplo, backup completo), então você tem que usar o cron para elas - é uma má idéia ter algumas tarefas feitas com o cron e algumas feitas com o mysql; você não saberá onde procurar
- Você pode encadear outros eventos que devem seguir se você tiver um script de shell
E, finalmente, só porque você pode fazer algo, não significa que seja uma boa ideia. Mysql é bom em coisas de dados. Não o use para coisas "shell".