Ação <T> vs delegar evento

Eu vi desenvolvedores usando os códigos abaixo bastante alternativamente. Qual é a diferença exata entre esses e quais seguem o padrão? Eles são iguais, comoAction eFunc<T> também é um delegado:

public event Action<EmployeeEventAgs> OnLeave;
public void Leave()
{
    OnLeave(new EmployeeEventAgs(this.ID));
}

VS

public delegate void GoOnLeave(EmployeeEventAgs e);
public event GoOnLeave OnLeave;
public void Leave()
{
    OnLeave(new EmployeeEventAgs(this.ID));
}

questionAnswers(8)

yourAnswerToTheQuestion