Note that at least for now, TimeOfDayTrigger is not universally supported. I’m a little behind on GitHub (it’s been a trying couple of weeks, I’ve not had a lot of OH time) but I think it’s just now being added to Rules DSL.
To elaborate a little on @florian-h05’s answer, the overriding requirement is to be able to determine exactly what triggered the rule. Therefore, the event Object contains enough information in it to tie this run of the rule to what triggered it. Since the TimeOfDayTrigger is a different trigger from GenericCronTrigger, the information that’s added to the event Object is going to be different.
Note, this isn’t just to determine what type of trigger caused the rule to run. This is to determine exactly which trigger caused the rule to run. If you have more than one TimeOfDayTrigger or GenericCronTrigger triggers, you can tell the difference between them.
This has many uses. One example is in my rule templates I use this information to change how the rule runs. When it’s triggered by time, cron, or Item event triggers it works as normal. When it’s triggered manually it runs a self test.
You could also use this in cases where you have a rule that needs to do one or two things differently based on how it’s triggered but otherwise work the same. For example, update the states of some Items but when it’s triggered by a TimeOfDayTrigger at midnight also reset some counters.