Hmm... I think I understand what's happening, and to be frank I'm quite shocked! Shocked! I'm also a bit confused that it hasn't happened before, but perhaps I did some semi-related change that altered the zoning behavior.
Apparently when overloading a method, despite the C# language reluctance concerning implicit casts, given both options the game chooses to cast a number into an enum, rather than casting it to a byte! I'm surprised by this, and I'm also surprised that it didn't generate so much as a warning for ambiguity. Since this will 100 % cause trouble in the future, I had to rename one of the overloaded methods.
Well, at least now I know about this mischievous language quirk!
For laymen: Nice find! It will be fixed in the next patch!