Вам не нужно иметь отдельный производный класс EventArgs для каждого события. Вполне приемлемо и даже желательно использовать существующие классы, полученные из EventArgs, а не изобретать колесо.
Это могут быть существующие классы фреймворка (например, System.Component.CancelEventArgs, если все, что вы хотите сделать, это дать обработчику событий возможность отменить действие.
Или вы можете создавать свои собственные классы, полученные из EventArgs, если у вас есть данные, специфичные для вашего приложения, для передачи обработчикам событий. Нет причин, по которым два события из одного и того же класса или разных классов не должны использовать один и тот же производный от EventArgs класс, если они отправляют одни и те же данные.