Yes that's true that they periodically check for work to do, but cron is not smart enough to know whether a service is already running - a systemd-timer can base it's timer from the point when a service completes. I think cron just fires up a service unless you build in some logic to check if it's running