With generics, is there ever a reason to create specific derived EventArg classes
It seems like now you can simply use them on the fly with a generic implementation.
As TcKs already said: Use EventArgs if you only need to pass one value, otherwise derive from EventArgs (or EventArgs, whatever you want).
EventArgs