I'm guessing there's something to do with syllabic grouping here, where we're naturally doing some optimization to form easily repeatable syllable groups. The other case would be to avoid making ambiguous sounding noises.
Take for example the inclusion of two '0' digits sequentially. Excluding the case where it's a 1-800 number, which indicates its own class of phone number. Let's look at a hypothetical example here: 459-2001. I'm pretty sure most English speakers would pronounce the final clause in this hypothetical number: "two-zero-zero-one", because "oh-oh" could blend together.
Any other rule, I think, would then follow how you approach grouping the numbers. In the case of the first three of seven digits in the number, in my experience a number is unlikely to start with a 0, (i.e. 019-9949), but in the case that a "group" does, I would definitely lean toward "zero", in that case "zero-one-nine" sounds infinitely better than starting with "oh".
It makes sense that "oh" would work better in between two other digits, and I'm having trouble imagining any three-digit zero sandwich (101, 102, ... 201, 202, 203 etc.) that doesn't sound better as "oh".
If the '0' is the final number in the group, I also think I say "zero". Try out 450, 290, etc. or even 050.
When you get to four digits, I think that's where interpretation might come into play. 5057 sounds equally good as "five-oh-five-seven" or "five-zero-five-seven" to me, though I might prefer the latter. Maybe that's when the speaker has to decide how to group, and in the case of a repeating pattern, that might change the way they inflect, too. Swap one digit in the previous example and you get 5050, which to me, instantly seems like it would switch to two groups of "five-zero".