<p>It's known that you should declare events that take as parameters <code>(object sender, EventArgs args)</code>. Why?</p>

This allows the consuming developer the ability to write a single event handler for multiple events, regardless of sender or event.
Edit:
Why would you need a different pattern?  You can inherit EventArgs to provide any amount of data, and changing the pattern is only going to serve to confuse and frustrate any developer that is forced to consume this new pattern.