Scheduling task in AP_Scheduler or register_timer_process?

What is the difference between scheduling a repeating task by
Adding task in
const AP_Scheduler::Task Copter::scheduler_tasks[] in ArduCopter.cpp
vs
Calling hal.scheduler->register_timer_process in some constructor / init()
?