Bis auf die Typisierung (das Delegate ist ne Function) ist das gut so, wie du es machst.
Ich hab mir auch schonmal Gedanken drüber gemacht, das einzige was mir einfiel war, dass sich die Delegate-Klasse selber um die von ihr erzeugten Delegates kümmern könnte, wenn du beim create noch ne ID übergibst.
Dann könnte die Anwendung so aussehen:
PHP-Code:
// erzeugen
component.addEventListener("event", Delegate.create(this, method, params, "myEventDelegate"));
// löschen
component.removeEventListener("event", Delegate.remove("myEventDelegate"));
wobei dann die Delegate.remove Methode das Delegate aus einer statischen Map holt, den Eintrag in der Map löscht, und die Delegatefunktion zurückgibt.