El método
addEventListener
es el recomendado por la W3C
[1] [2] para registrar un evento a un elemento. Una de sus principales ventajas es que permite un mayor control de la fase de captura, pudiéndose así evitar el
bubbling, además de lo que ya mencionaste.
Acá puedes encontrar más razones por las que debes de usar este método.
Quizá la principal desventaja radica en que las versiones anteriores a la 9 de Internet Explorer no dan soporte a este método, sin embargo, tienes como alternativa al método
attachEvent
. Pero si lo que buscas es que el registro de un evento funcione en todas las versiones de todos los navegadores, la forma
element.onevent
es la que debes de usar.
Por cierto, cuando usas
addEventListener
, ya no es necesario colocar el
on antes del nombre del evento.
Saludos