As per documentation, it states that :
"If you have to react to particular events in your persistence layer, you can also use the Hibernate event architecture. The event system can be used in addition, or as a replacement, for interceptors. "
There are a few differences in both :
Listeners are easily configurable i.e. as per hibernate doc "Having the type additionally defined during registration makes it easier to turn custom listeners on or off during configuration"
Interceptors can be session-scoped or session factory scoped through programmatic as well as declarative approach. On the other hand, Listeners registered declaratively cannot share instances. If the same class name is used in multiple elements, each reference will result in a separate instance of that class. If you need to share listener instances between listener types you must use the programmatic registration approach.