Поскольку событие должно указывать на функцию, которую оно запускает каким-либо образом, и в C # этот механизм достигается делегатами.
В ответ на комментарий:
Тогда почему такой случай не с Java, который использует только методы для запуска событий?использует старый традиционный шаблон событий (как в C ++).Делегаты C # проще в использовании, а также позволяют указывать на статическую функцию, а не на принудительное использование метода класса.