Unfortunately, the reason that Internet Explorer is saving ".xlsx" as ".zip" is because it is ignoring the "application/octet-stream" mimetype, instead inspecting the contents of the file: https://msdn.microsoft.com/en-us/library/ms775147(v=vs.85).aspx
Because a ".xlsx" file is actually a ".zip" file containing an XML-based Office document (and related files), it is misrecognized by Internet Explorer as a ".zip".
It looks like this can be resolved through using the "Content-Disposition" header. From the link above:
If the file is marked as "content-disposition=attachment" in the HTTP header, Internet Explorer treats the file name from the URL as final and does not rename it before placing it in the cache.
I'm slightly surprised that Microsoft's own browser fails to properly detect the mimetype of Microsoft's own document type ... but designing a browser to universally assume "application/octet-stream" is incorrect and override the mimetype is pretty brain-damaged already.