The whole „implicit“ return stuff in conditions in kind of shady, so IMO would mean nothing bad if one needs to explicitly return in these actions.
What about always enabling it then? Sure, it is a breaking change but if we clearly communicate it, avoid confusion by giving no choice, then it should be possible to get along with it. Adding return isn‘t that complicated and if we provide the right query for the developer searchbar, it should be easy to locate all conditions.
Rules can now also be regenerated from templates thanks to @Nadahar.
Also don‘t forget that the pure JS event object isn‘t available without the wrapper.
You can check ScriptConditionHandler in core, the condition is just the plain script that is passed to ScriptEngine::eval or CompiledScript::eval.
Given that ScriptEngine::eval allows for stuff like eval(„10 > “), I think it is expected that the „implicit“ return works. As long as the global script ends its execution with a boolean value, it is considered (at least it seems to me) to have returned this (you cannot really return from a global script, hence the error if return is used without wrapper).
Just seen that Nadahar googled this, and I agree with him on the house of cards wrt to script identifiers (@Nadahar I have seen your issue, wanted to answer).