I‘m not good in JavaScript, but reading the code, I wonder if this implementation doesn’t have an issue with truthiness in the second array. For example if you zip([true,true],[false,false]).
The minimum length approach seams to be the better one. (Without having it run anywhere.)