I can only speak for my mission (the soon-to-be-released "Now and Then"), but this issue can be resolved in the mission scripts. I fixed it yesterday so it'll be in the released FM. Here are the details.
In this mission I use the atdm:combination_lock_small. As is discussed in various threads, when using this asset you have to include the appropriate script file(s) in your <fm>\script folder. In this case, atdm:combination_lock_small has spawnarg "scriptobject" = "numberwheel_lock". At some point, when I was developing my first FM, I got a hold of numberwheel_lock.script (which was at the time included the TDM release. Subsequently it was removed, I think). I've put this in my \script folder for each FM I've built, and it works fine.
Except in the following case: the door is a secret door that isn't frobable, and it has open_on_unlock=1. The default code in numberwheel_lock.script makes the following call when the combo is correctly entered:
t.Unlock();
The variable 't' is the target of the combo lock (the door). This statement unlocks the secret door, which, because open_on_unlock=1, opens it. Except: if the user has "Open Doors on Unlock" = Off, that overrides open_on_unlock. So in that case the door isn't opened. And since the door isn't frobable, there is no way to open it even if it is unlocked.
The fix is to modify numberwheel_lock.script to call t.Open() as well t.Unlock(). This unlocks and then opens the door. Oh, and you have to remove the open_on_unlock=1 spawnarg from the door too.
These changes work fine, and are appropriate IMHO, since each FM 'owns' their copy of numberwheel_lock.script. It's a shame that each FM developer may need to make this adjustment, but I think that's an artifact of numberwheel's history.