The main difference you are looking for is that
cron is not running constantly. As explained in
cron then wakes up every minute, examining all stored crontabs, check‐
ing each command to see if it should be run in the current minute.
When executing commands, any output is mailed to the owner of the
crontab (or to the user named in the MAILTO environment variable in the
crontab, if such exists). The children copies of cron running these
processes have their name coerced to uppercase, as will be seen in the
syslog and ps output.
In other words,
cron will only be started once a minute and it will test whether it should be run. Your sleep approach, on the other hand would require your actual
sleep command, your shell, your terminal, and the
while (or whatever) loop to be running at the same time.
Even if they were launching the same number of processes,
cron would be better. It is written precisely for this by people who tend to be very good in their job. It is bound to do a better job of it than a simple shell loop.