Does Arduino need a real-time scheduler?

Yeah, I think we need to stop thinking of the implementation, and start thinking about what the API should look like if it's going to be usable by "The Arduino Community."

timer mytimer;
void timerSet(mytimer, timeInms)
void timerSet(mytimer, hours, int minutes, int seconds)
boolean timerExpired(mytimer)
long timerTimeLeft(mytimer)

alarmClock myclock
alarmClockSet()
alarmSet(endTime)

In this case "timers" implement a delay for some duration, while alarmclocks implement checking whether some absolute time has ocurred.