There are many things that event listeners can do that event handlers can't. With event listeners you can determine the order in which listeners attached to different elements all triggered by the same event will run by setting the third parameter of the call to either true or false. This will determine whether the listener will be processed in the first phase that starts at the body and works in or in the second phase that starts at the point where the event was triggered and works back out to the body. You don't get this choice if you use event handlers. With event listeners only the order in which listeners attached to the same element and listening for the same event is undefined - but since the only time that is going to happen will be with completely separate scripts it will not matter which runs first and which second (unlike with handlers where only the second one added will run at all).
This article written by Stephen Chapman, Felgall Pty Ltd.