I think there's a technical reason / limitation that $N is used internally during regex. It might be avoidable (read: it's most likely avoidable), but I'm not too sure it's worth avoiding. It might involve a lot more code complexity and introduce more bugs, simply to add a small extra convenience. I also don't see what's so bad about the "workarounds".
I actually see this as a feature, not a bug. Other languages like Perl put the regex match inside $N, although of course $N is dedicated to matches in those languages. In some sense, you can see $N inside regex as a tokenized list of the resulting matches. Of course this means wiping out the previous $N, but the behaviour is similar to $v1/$v2 inside nested ifs (or even more appropriately, $1- inside of $findfile()). You could see the replace part of $regsubex as a nested tokenization context for $N.