i added an explanation to the op. basically OP_0 is defined, but there is no op that pushes a 0 to the stack. Instead it's actually interpreted as push 0 bytes to the stack. See script.h GetOp2
I hope I'm not over-posting here, but as long as you're trying to clarify things. BlockExplorer currently describes this as
"OP_DUP OP_HASH160 0 OP_EQUALVERIFY OP_CHECKSIG".
With your explanation here, (assuming the "0" is "OP_0") the "0" sounds like it might be a bit... confusing.
Also, with OP_0 being an effective no-op (rather than push-zero), the datatype checking method I was mentioning prob wouldn't have done anything useful here (I doubt you're much surprised). I'm also marking this back down from "structurally impossible" to "very improbable", there *may* be a path to claim, but it wouldn't be worth the effort to discover.