addObserver() vs addListener()?

Can anyone elaborate on the differences between the two methods, and when each should be used in lieu of the other?

addObserver triggers on changes to a property. addListener triggers on events.