В принципе, нет разницы в этих двух appoaches. Это то, что сделано в OnInit в классе страницы:
protected internal override void OnInit(EventArgs e)
{
base.OnInit(e);
if (this._theme != null)
{
this._theme.SetStyleSheet();
}
if (this._styleSheet != null)
{
this._styleSheet.SetStyleSheet();
}
}
Если мы откроем base.OnInit, мы увидим, что это место, где запущен Page_Init:
protected internal virtual void OnInit(EventArgs e)
{
if (this.HasEvents())
{
EventHandler handler = this._occasionalFields.Events[EventInit] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
}
Поэтому в этих двух подходах нет разницы. Однако вам нужно вызвать base.OnInit в вашем методе overriden, если вы решите использовать переопределение вместо события. И еще одно отличие заключается в том, что если вы используете переопределение, вы можете запустить некоторый код сразу после применения темы.
С уважением.
P.S. Единственное, что я рекомендую, это использовать один и тот же подход во всем приложении.