Both

* !~??@*
GB!~GB@hostmask

are the same exact mask. So this is not a mIRC bug. If you have to have a 2 character ban mask, then I would recommend doing an if level check before banning. For example:

ON 2:JOIN:#: {
if ($level($address($nick,1)) <= 2) {
mode # +b $nick
kick # $nick
}
}

I'm sure there is a better method, but something like this should work.