Windows tends to get confused by the zip archives OS X's built-in archiving utility produces - which is unfortunate.
Than you seem to be misunderstanding some OS X fundamentals. This is not caused by the OS X zip function at all! OS X uses the standard zip format and the zip tool does not put anything in it that wasn't already selected and/or inside any folders/subfolders.
Since OS X uses resources forks and such you'll find .DS_Store files and other hidden files all over the place. You can't see them in Finder because it hides the so called dotfiles (files that start with a .). You can see them when using Terminal by issuing ls -la. If such a hidden file were to be present in a selected folder or one/more of its subfolders then it will be included in the zip file. It simply zips everything: visible files and the hidden files. There are some cases where you have to upload a zip file with your customizations. It is in these cases that things can go wrong because the tool that will retrieve the customizations and apply them doesn't recognize the dotfiles and, more importantly, doesn't know what to do with them. Simply put: it will choke on them and present some error.
When using the Windows built-in unzipper there shouldn't be any problems. it will simply unpack all the files including the hidden ones. When you run Windows 7 or 8 those files will be hidden as well when hiding such files has been enabled (which is by default). Using any other 3rd party unzipper such as 7-zip, Winzip or Winrar you get the same result.
There are some tools for OS X that will get rid of the .DS_Store files for you (OS X comes with one; it's a commandline utility named "dot_clean") and many of the packers/unpackers (such as keka you mentioned) come with a built-in option to do this automatically when creating an archive. They are useful because it prevents the "what do these dotfiles mean?", "all files are duplicated, why did you do that?!" and problems with certain customization tools.
In other words: nothing is wrong with the OS X zipper nor the unzipper on the Windows machine. Zip files can get damaged when transferring and cause errors when you unzip such damaged file. Also, as stated before, it is very common to filter out zip files from mail messages. This can be done differently but the most common way of doing it is by either removing it completely and putting a message inside the e-mail telling you it removed the attachment or by doing something like that but renaming the attachment from <name>.zip to something like <name>-removed.zip.txt. The latter is the worst way of doing it because it is very easy to overlook the .txt part. Quite a lot of people still think it is a zip file and will try to unpack it with Winzip and the like.
TL;DR: he's either unpacking a damaged zip file or something that looks like one but isn't. Windows and Linux in general do not have any problems with zip files created in OS X via the context menu or the commandline tool.