ようるすに、

AがBから呼ばれたいのだけどBはA専用には設計できない(設計したくない)、というとき
デリゲートかイベントを使う(と良い)
(さもなくば呼び出される側の詳細を隠蔽するためだけに継承と多態を使う、みたいなアホらしい設計になる)

で、BからAを呼び出すにあたり、呼び出し先がA一つで良いときはデリゲート、
Aだけとは限らず、Aがあずかり知らない不特定多数(CやDやE)も同じタイミングでの
Bからの呼び出しを必要としているかもしれない(Aにはわからない or わからせたくない)場合はイベントを使う

前者は昔はコールバックと呼ばれていたしくみ