I just realized that this actually would/should have solved OP's problem on MinGW, because zparseopts doesn't require calling out to a subshell. That's kind of ironic: they didn't realize that their solved problem was that solved.
IIRC there was something with the way zparseopts worked that caused it to not be able to parse the CLI I had setup -- I can't remember what the drawback was, though, and it's one of those one-liners I've just used blindly after I got it to work. :)