Используя ключевое слово event , вы говорите C # генерировать скрытые методы, add_XXX и remove_XXX для вашего основного делегата. Это гарантирует, что любой, кто использует ваш класс, может только присоединять и удалять делегатов к событию. Ключевым моментом является то, что никто не находится за пределами вашего класса и не поднимает событие, поэтому у вас есть полный контроль над тем, когда это произойдет.
Если вы не используете событие , вы просто выставляете общедоступного делегата, к которому любой может добавить, удалить и вызвать. Маловероятно, что вы хотите, чтобы кто-либо, кроме вашего класса, выполнял вызов.