It's like the reference says right at the section you linked: the lowest bit of the opcode byte species the operand size. So an opcode can take either a byte or a word, right? But when it takes no operands like bnot, that just makes both of them do the same thing.
You can tell from ScummVM's interpretation, they take the opcode byte, remember the original value for later, then shift it right to get the final opcode. So 0x02 and 0x03 are effectively both add, sharing a single handler.
What I'd like to know (not really) is when they changed that to having the "duplicates" be error-raising dummies, as seen in the SCI11 source code. That has a full 256 items worth of jump targets. With the above behavior, you might think they could've made do with only 128. But what do I know.
As for minor recompilation code changes in general, I've seen and documented some benign differences before, like "do I push1 (one byte) or do I push 1 (two bytes)?" where IIRC the original SC compiler at the time picked the latter, but SCI Companion picked the former.