Intentionally taking the input of a MOS MCU above its supply rail is living dangerously and is unnecessary. A transistor collector with pull-up resistor is a much safer approach and has absolutely no tolerancing issues. Neither does it force current into the MCU supply rail or any auxiliary rail. Also, it provides better isolation between the input signal and the MCU input.
The auxiliary rail protector is non-modular. Every auxiliary rail protector has to have the additional auxiliary voltage rail. So, if you just want one auxiliary rail protector on a board, you would still incur the overhead of the additional rail circuitry. The auxiliary rail approach also has single point failure for all the inputs. Also, as has been stated, there are tolerancing issues.
In addition, the transistor approach has the potential for fast operation which the catching diode approach does not. The transistor approach also provides a nice clean 0V and 3V3 input to the MCU, rather than relying on the actual input signal, and is much less dependent on the source impedance of the input signal, especially the NMOSFET protector.
The NMOSFET protector, because of its high input impedance (470k), does not load the input device, to the same degree as the BJT protector (10k). The catching diode protectors have a very high input impedance which drops to 10k around 3V7, when the catching diodes start forcing current into the MCU 3V3 supply rail. Thus, there is an abrupt change in the input impedance.
As to the difference in complexity. That is undeniable, for the BJT protector, but there is little difference in component count between the NMOSFET protector and the auxiliary rail protector, especially when you take into account the auxiliary rail circuitry (be interesting to see an actual schematic) and wiring, not to mention decoupling capacitors. Also, the auxiliary rail protector schematic does not include an input pull-up function, which the OP shows on his schematic. But, in practical terms, none of the circuits will use that much PCB area because of the very small size of SM components. And, of course, you can get multiple transistors in a pack to save space, if really necessary.
My advice is not to mess about with input protection- do the job the best you can and use a MOSFET protector if you can tolerate an inverting logic function, or a two MOSFET protector if you need a non-inverting function.
But if you want a simple, low-component-count input protector, the resistor/Zener diode circuit shown in the attached schematic will do the job nicely. It only has one tolerancing consideration: the Vz of the Zener diode, and that is well defined on the data sheet, and it does not force current into any supply rail or allow the MCU input to go above its supply rail.
http://www.comchiptech.com/admin/files/product/CZRQR52C2-HF%20THRU%20CZRQR52C39-HF-RevB.pdf