I haven’t seen anyone override Iterator::zip in particular. Actually it would be hard to do, if not impossible, because Zip is an opaque type with no public constructor at all. I think a third-party implementation of zip could only diverge, not return at all. Same for all the other Iterator methods that return opaque types – this is probably the best way to make something un-overridable.
I’ve definitely seen other Iterator methods overridden though, and a prime one to consider is fold. I went through myself to make sure most of the std::iter types implement a custom fold. For example, Chain::fold can do a much better job of folding all of its first part, then all of its second part, rather than the default fold calling next() item-by-item. For other wrapper types, while they may not have a benefit like that themselves, they can forward to their inner type’s fold in case it’s something optimized like Chain.