I've toyed with this idea for a few months..
A common problem with cron tasks in Drupal is that it is generally an all-or-nothing proposition, either every time you run cron.php the system runs every individual cron task, or (possibly for n00bs) you don't run it at all. Then there's the problem that some tasks need to be ran frequently, e.g. search index refreshing vs tag cloud updates vs RSS feed aggregation vs scheduler updating..
What I propose is rewriting cron.module to allow individual cron tasks be scheduled differently.
There would be three parts to it:
At initialization, cron would search for all hook tasks and record ones it was previously not aware of; hook_cron() would be used directly to identify these.
Each cron task would be executed based on its individually configured schedule; by default each task would run on each cron schedule (schedule=ALL), though this could be adjusted using a new (optional) hook_cron_info() call which could e.g. tell it to run on all cron executions or maybe just once per day.
After each cron task was executed the system would record: a) how long the task took to execute, the last time it executed, c) the task's return status (success, fail, $err).
To work with this there would be an admin settings page which would users with "administer cron tasks" permission to modify the schedule:
All tasks would be listed out individually along with a description obtained from an (optional) new hook_cron_info(); this would list its (optional) default along with a textual help/recommendation, e.g. "only needs to run once per day unless you are also using the xyz module in which case you may want to run it more frequently."
Each task's default would be listed, per above.
Each task would have a way to assign the schedule. Am unsure how exactly this would be done, maybe as a crontab-like configuration of just entering numbers, or maybe a fancier (maybe limited?) set of selectors to define the regularity at which they are executed.
Each task would also have a checkbox to control what to do if the previous execution failed: do not run again until the admin re-activated the cron, continue as normal, or re-run on the immediately next cron run regardless of schedule (useful for dealing with FTP upload timeouts).