Why is the method signature of TaskListener different than other listeners

The method signature of TaskListener interface is void notify(DelegateTask delegateTask) which do not throw an Exception. Meanwhile, for DelegateListener interface and its sub-interface, the method signature is void notify(T instance) throws Exception which may throw an Exception.

May I know the reason why there is the difference between the two types of listener please?