Ashley
I would like to separate this discuss into some parts.
1. If a segment of events appears usually in a kind of game / application, i.e. it is a template. It is worth to encapsulate this segment of events into a function, or pack it into a plugin.
A benefit of encapsulate events is to reduce the bug, even 1 action + 1 expression might have bug; another benefit is more readable.
A function might be easier to be made than a plugin. But "function" events might not be easier to copy to another project.
2. Which parts of event should build into plugin? Which parts should expose on event sheet?
I would analyze the behavior of usage - Which parts of events are changeful in every calling. Which parts of events is almost fixed.
If the event pattern of (1 action + 1 expression) is almost fixed in most of cases, I would like to build it into plugin (usually, but not always)
But what if this pattern is changed/not existed in some cases? Just provide another "manual" operation mode by leaving the expression for these kind of cases.
So my plugin will have more than one usage modes, one is simple mode for most of cases, one is manual mode to expose more control.
Edit
I agree Ashley 's framework which all plugins are independent could cover all cases. I had this mode in my plugin if necessary, too.
"I can do it" is good, "I can do it with a more easier way" might be better, IMO. So I would try to provide more high level ACE in my plugin to cover more basic events for some specific applications.
This idea is also in official C2 plugin, for example, in platformer game, using platform behavior might be the first choice than using custom moving behavior.