If you examine these files you will see that they share the bootstrap process, but the rest is different.
index.php calls menu_execute_active_handler, which is a fairly heavyweight function. It essentially does everything to render a page (lots of hooks get called).
cron.php just calls drupal_cron_run, which is fairly lightweight (it just calls everything that implements hook_cron and also bumps up the execution time via set_time_limit. This can decrease the memory footprint for expensive tasks (like rebuilding search indexes).
Addendum to address comment
Routing everything through index.php is good (front controller pattern). However, I see it being acceptable to have an extra script entry point for maintenance tasks that essentially run a single hook. I think of this as tasks that could normally be handled by drush, but need to be web-accessible or if a site doesn't have CLI capabilities. I have also run into a few cases where a site would bootstrap, but abort because of major problems (like a severely damaged menu cache). A maintenance script can fix this, if drush can't be used. It is worth noting, though, that extra precaution needs to be taken to lock down the scripts against malicious access and use.