...I guess some people want to tinker with the engine internals, but that type of thing has historically caused awful, horrible, nightmarish compatibility problems, so it's something I would specifically discourage. (And often I think the things people want to do are already possible, just if designed in a different and more maintainable way.)...
"Often" is the keyword. Often, but not always. I think the users who end up using monogame, for example, are the class of users that would have stayed if they could, but they can't.
One of the biggest things I needed to do in c2 was add collision layers to the platformer (so some objects could go through some things, some of the time), handle slopes (built in platformer is slope agnostic - The object gets pushed correctly from collision but is ignorant of y velocity as it travels up or down), get collision point, collision normal, etc, as well as a few other things. The built in platformer didn't cut my needs at all so I had already rolled one, but adding additional features to the collision system was... unfeasible. Recreated the whole project in Unity in 2 weeks.
Now, some of this is possible in c3 now, because features have been added. But this is years after I needed them. But the problem is the same now as it was then, in principle. If Scirra don't agree that a suggestion will benefit enough people, it's basically shot down. In other cases it takes YEARS before it is added (prismatic joints in box2d, as an example). Adding such a joint was only like 10 lines of code, but it was never added to c2 despite a fair number of people asking for it. But I added it to my project and dealt with it. Regardless, I still can't get the surface normal of the collider an object is overlapping without adding more. Box2d provides raycasts, boxcasts, etc... so if you are already using physics, there are solutions already baked into the box2d behavior... but... not exposed. So I added workaround and hacks. If you aren't using physics, you quickly realize that the construct runtime does some shady black magic behind the scenes just to make behaviors like SOLID and Platformer interact.
Enter the desire to want to tweak the engine. Because you need it, even though Scirra doesn't see the need. Even though Scirra does see the need in their specific uses.
Basically, its seems like Scirra recognizes the need for engine tweaking to support behavior interaction, but is adamant that isn't how you should develop (do as we say, not as we do). So instead you end up with behaviors that, in order to function correctly, need some back and forth boiler plate added either to the event side, or through scripting.
TLDR, its hard to take such advice seriously when the Scrirra team authors behaviors that need engine tweaks in order to function (shadow caster, platformer, solid, dropthrough, etc... all have some internal engine stuff if I recall). Its frustrating in many cases and makes the itch to switch pretty strong.
I think there are good arguments for steering most users away from doing this. But in my case, c3 clamping down on this literally steered me right towards another game engine. I cannot (quickly/easily) make some of things I did in c2, in c3, without modifying behaviors. If I have to rewrite behaviors from scratch, I'm going to do that in an engine where my power gains will be substantially higher. I really like working in construct, it is relaxing and less stressful ide (hard to explain, but opeing construct is fun. Opening unity is work), But, when a simple tweak to the engine would fix your problem but Scirra advocates essentially rewriting core components entirely on your own... If I sink my time in that, I want AAA rendering and postprocessing and access to 1000s of premade tools, etc...
Simply not being able to tweak pathfinding in c3, lead me to unity where I bought a* pathfinding project for $30. It solved my needs and now the prototype is sitting in a development environment where the clients can more easily take it further if they wish.
I still do alot of stuff in c2, and I do some stuff in c3. But every time I'm just about to buy c3, I remember its leased, yet doesn't offer the ability to adjust it to fit my needs without reinventing the wheel. So... basically... don't use inheritance, even if objectB is functionally the same as ObjectA but with one additional feature.