its strange
i tested here and works fine
[00:59:14] Dean sets mode: +v Jack|Sparrow
[00:59:15] Botname sets mode: -v Jack|Sparrow
[00:59:22] Dean sets mode: +vh Jack|Sparrow Jack|Sparrow
[00:59:22] Botname sets mode: -vh Jack|Sparrow Jack|Sparrow
[01:00:11] Dean sets mode: +vhaoq Jack|Sparrow Jack|Sparrow Jack|Sparrow Jack|Sparrow Jack|Sparrow
[01:00:11] Botname sets mode: -vhoaq Jack|Sparrow Jack|Sparrow Jack|Sparrow Jack|Sparrow Jack|Sparrow
the $regsubex loop and the while loop, will return nicks as "-vhoaq mutenick mutenick mutenick mutenick mutenick"
as you saw will create a temporary var with the nicks
so it will remove all modes
From my experience, -vhoaq mutenick only attempts to remove +v.