I understand where you're coming from
Ruskul but I don't necessarily agree. I don't think it's fair to try to strictly apply code architecture principles to Construct's Event sheet system as they have been written with typical coding languages in mind, and not event sheets.
Instead I think it's far more sensible to apply a set of new coding principles that are designed around the event sheet and Construct's addon architecture instead.
The idea that because you might outgrow an addon then you should absolutely avoid it doesn't make sense to me. If you truly have a good reason not to use built in features, I think writing a new behavior is a far better idea than trying to handle everything using events.
I have seen projects scale just fine within Construct's features, but it implies that you need to design your architecture around what's there, not around arbitrary coding style made for other software development environments.
However, if you would rather stick to paradigms you are already familiar with, then I would agree that maybe construct events aren't the best choice.
About scripting, while I agree that it's lacking in some aspects, there are many ways to extend it and break free from many of its limitations. In this aspect, since it's all JS, the sky is the limit with what you can do. Especially if you would rather ditch behaviors and write your own systems, I think writing your own behaviors in the form of scripts can fix whatever issue you have with the program.
Also, with the recent addition of TS, and with the VS Code extension, I think Unity C# with Visual Studio isn't that much of a better coding environment compared to C3. The only thing maybe is that it doesn't integrate into the editor, and C3 scripts aren't treated the same way as Unity scripts.