On Unix systems, the cron service runs every minute (generally) to check whether there is a script to run. In WordPress, that check is done on every page load. So if no one loads your website in a given day, or only pages from a static cache are loaded, your cron jobs may not fire that day.