Good post. It doesn't usually add a ton of logic, but it's more than the decode of the other states(especially one-hot encoded machines, which have 2^n-n unencoded states). For one-hot, probably the best thing to do is not look for an unencoded state, but OR together something that looks for all the available states, and if it's a 0 then we're in no-man's land.
For safety critical, this is definitely an improvement, but my personal feeling is that it is far from safe. A safe state-machine with binary encoding will most likely jump to a known state, which often suffers from that previous problem of waiting for a signal that will never come because the rest of the system thinks it's in another state. And even if state-machines could be truly safe, everything in the design that has a feedback path will need checks. If a counter jumps to a different count value it may never recover from that(yes it could flip, but if the incrementer is dependent on some value decode, i.e. it counts different values based on it's current state) then it might be in an out of bounds value. It's just really, really difficult to be sure, and the people who really need it usually resort to redundant systems and polling, or stuff like that.
I'm not saying safe encoding is not important, just that most users don't really know how much it helps their system reliability, as it is not the only consideration. And I've seen users argue they need it for stuff that probably really doesn't, like a video game.