You are doing it to a friend, and not yourself--correct? Also, they are rejoining with the same name? That's all I can think of that would interfere. Do you have other channel modes that @ being an operator, that perhaps mIRC doesn't acknowledge you're an operator?
Also, this is a little more fail-safe:
on @*:KICK:#: /set -u10 %kick. [ $+ [ $knick ] ] $chan
on @*:JOIN:#: {
/msg $chan %kick. [ $+ [ $nick ] ]
if (%kick. [ $+ [ $nick ] ] == $chan) {
/ban -u10 $nick 2
/kick $chan $nick Autorejoin on kick is not nice
}
}
'Tested it on my setup, and it works.