cron используется, когда вы хотите, чтобы процесс выполнялся в какое-то точное абсолютное время (т.е. 3:15 утра каждый день или каждый час в X:05 или около того), пока ваш сценарий соответствует времени, когда вы его запускаете. В вашем примере будет запускаться каждый час с момента его запуска, что должно соответствовать последовательности загрузки. Поэтому, если ваш компьютер загружается в 1:05, вы выполняете свою работу в каждый X:05, а если он загружается в 3:36, вы выполняете свою работу в X:36.
Если вы просто хотите, чтобы это делалось примерно раз в час, то это на самом деле не меняется, но, конечно, он может работать где-то между первой и последней минутой часа, в зависимости от загрузки. На самом деле, если ваш do_task - это что-то длинное, занимающее много времени, он может даже запускаться реже, чем раз в час (поскольку сон рассчитывается в конце задачи, поэтому, если do_task занимает 30 минут, do_task будет запускаться каждые 1:30 часов в вашем случае)
С другой стороны, используя cron, если ваша система не всегда работает, вы можете легко потерять некоторые события (поскольку они выполняются только тогда, когда условие является точным). В этом случае анакрон более рекомендуется (так как он просто смотрит время с последнего выполнения). Другое дело, что cron все равно выполнит задание, даже если предыдущий istance еще не закончился, что в некоторых случаях может быть хорошим или плохим, а ваш сценарий - нет.
Короче говоря: если вам нужно определенное время и знать, что cron обычно лучше, если вам просто нужно периодическое задание без определенного времени, то вы можете пойти на выскочку.