MAME changes the original code so you can simply press the switch and let go (so you don't have to hold a button to get high gear). However when you actually use a shifter, it doesn't play right since the switch toggles between high and low.
This is one things which gets my goat a bit. MAME is supposed to be about accuracy, yet the controls (IMO one of the, if not the most important part of a machine) are so often very in-accurately emulated or documented in MAME.
I agree with you, but I bet we (even with the others in BYOAC that agree with us) are a minority. I've thought a lot about it and understand many of the reasons why the inputs are done the way they are.
First, imagine the posts if all the shifters were changed so you had to hold down the button.

Inputs is one place mameDev has desided to let the limits of the PC determine how many of the inputs are emulated/simulated; another example, limited number PC buttons ==> 12-rotaries (ikari joystick) simulated as a dial. I mean, this one makes sense only because of the limits of the PC.
Then there are also a lot of grey areas:
Analog joystick/yoke games (example: Star Wars) playable with trackballs,
Analog position gun game playable with lightguns (and trackballs),
PC lightgun reload (becasue PC guns output differently than originals),
Analog pedals, joysticks, and trackballs playable with keyboard.
And the not-so-grey because it-was-done-in-bootlegs, and no-way-for-mame-to-tell-anyway:
Yoke games playable with flight sticks,
Cone buttons playable with normal buttons.
Plus don't forget the unemulatable (by mame) parts of inputs: tron's joystick handle shape, tempest's spinner speed and feel, starwars' yoke, spy hunter's steering wheel, etc. These are very important to getting the original feel of the game, but out of mame's emulation power. Not BYOAC's power, though.

Personally, I wouldn't mind as much about the mis-simulated inputs as long as an original input's output can be used too, and it's noted in the source what was the original input. But that takes hacks and messes up the code a bit more.