Я думаю, что есть два потенциально значимых различия в двух методах.
Я имею в виду способность контролировать последовательность выполнения.
Если вы переопределяете, вы знаете, когда произойдет загрузка базовых классов, потому что вы их вызываете. Это обеспечивает больший контроль, но, вероятно, это плохо, как утверждают многие.
Если вы используете событие, у вас нет никаких гарантий с точки зрения порядка вызова. Это вынуждает вас писать событие Load, которое не должно зависеть от того, что делают суперклассы во время фазы загрузки. Я думаю, что это был бы предпочтительный подход, и, возможно, именно поэтому VS автоматически сгенерированный код именно таким образом.