Die Komponente kann nicht sicherstellen, dass der Client (also der Part des Programms, der die Komponente einbindet), auch wirklich ein Event implementiert hat. Ein Button z.B. hat ein OnMouseMove Event. Das musst du als Entwickler aber nicht implementieren. Und wäre die TButton Klasse nun schlampig programmiert, würd dir immer ne
Exception um die Ohren fliegenn, sobald du die Maus über den Button bewegst und du kein entsprechendes Eventhandler pflegst.
Um noch mehr auf Nummer sicher zu gehen, kannst du das if assigned sogar noch etwas ausweiten. Denn selbst wenn assigned(EventName) <> nil ist, heisst das noch lange nicht, dass EventName auch wirklich vom erwarteten Typ ist. Deshalb noch besser:
if Assigned(EventName) and (EventName is TEventName) Then EventName;