Given that Mario.collide is calling a method on Block, is there some reason you can't have Block.createMushroom or Block.collide(thingHittingMe)? Does it need to be in update for some reason? An event makes more sense to me than an update loop for a context like this--the collision happens once at one moment and really only needs to fire off, "Hey, I've hit something!" to the interested parties (usually those involved in the collision). It's a lot cheaper than every few milliseconds, "Am I hit? Am I hit? Am I hit? I'm hit! Am I hit? Am I hit?"
I'm faulty of going that road too, very often. I have a post-it on my left screen (coding screen) that says exactly 'use events!' and it helps.
As for, is it acceptable in the industry: not really.
Does it happen?: All the time!
The thing is, no client (whether it be internal or external) will flat-out say that it's acceptable to code cheaply. They all want quality for cheap, but only some of them actually have realistic budgetary estimates.
Then you need to account for the quantity of change of direction during production, how late it happens, etc.
These tend to lead to hacky code appearing in the codebase. The technical debt increases, and through escalation of commitment, it gets more and more ignored (and not refactored).
As an 'indie developer', I give myself a guideline that goes as follows:
Code 5 days.
Refactor 1 day.
Take 1 day off.
During the 5 days I develop, I try to make things as 'fast' as possible.
During the refactor day, I take all the things I've done and consider how to make it more efficient, cleaner, etc. I break longer functions into smaller ones, fix my encapsulation usage of local vars, etc.
No later than yesterday, I've fixed a problem exactly like yours (occurring in an onEnterFrame loop and using a hacky Boolean to make sure it happens only once). It was taxing my loop unnecessarily and I switched that to an actual Event.
Whether it ends up being acceptable or not, I think you should aim at being able to avoid it, so that when given the time, you are able to code cleanly. The idea is that, if you're not rushed early in dev, you'll be able to do a clean codebase and keep relatively the same velocity over time.