This is definitely sometimes useful, but I think less often than zip_longest, which we already decided long ago isn’t important enough to push into zip but instead should be a separate function living in itertools.
I disagree. In my own personal experience, ~80% of the time when I use `zip` there is an assumption that all of the iterables are the same length. Often the context of the surrounding code proves it to be correct, but I've been bitten several times by refactorings that start silently throwing tail-end data away. It often feels just too heavy to set up a sentinel value and use zip_longest, just as a sort of assertion against unexpected results. At the same, time, I don't think that the current default behavior should be changed, since that would likely break more code than it "fixes" (and the only way to get the old behavior would be to wrap every usage in a try-except-pass). I would very much welcome this change, especially since it shouldn't have any overhead for non-strict-users, and minimal overhead for those who want to enforce the check. I'd be happy to open a BPO and PR if this gets any traction here.