From looking at your code, it appears that you want a zip that is generic according to arity. You also don't seem to care about the container type, since you have only lists. So, the above isn't really related.
Here's an adaptation of your code that works. Personally, I'd probably use Template Haskell. This is not really generic at all. Rather it's an advertisement for overloading. ;)