[..] and would involve a loop to iterate through all of the selected nicks to build multiple /mode requests, [..]
I wouldn't bother with that part. These aliases/popups have always clearly been intended to be basic. People who do heavy-duty channel management have long found more capable scripts as replacement, and that's just fine, I think.
Keep in mind that maroon's suggestion also produces more 'v' characters than nicknames when more than three nicknames are selected, which I'm sure will also trigger errors on that "I don't know the difference between de facto standards and bugs" person's ircd. At minimum, it would need something like $min($0,3) instead of just $0, which would be a good opportunity to add $min/$max.
FWIW, use of $modespl would end up looking somewhat like this (also assuming the existence of a $min, otherwise $iif can be used):
.Voice:/var %count = $min($0,$modespl) | /mode # + $+ $str(v,%count) $$1- [ $+ [ %count ] ]
This can be made shorter, but probably not less unreadable?