Wondering what an incorrect permission is in the first place
In your example, if I go, as an admin user, to remove the executable flag of an app (say, as a temporary solution to prevent users from launching the app; I know, silly example, but I don’t have one handy right now), I guess it’s incorrect from the OS point of view (a file containing code that isn’t executable), but correct in the user’s expectation.
So, if it’s the user’s choice of breaking/changing permissions, I guess they must be preserved.
Now, if the permissions become corrupted (I/O errors while copying a file, for instance), then perhaps they should be fixed while being zipped (perhaps not: how do you know they have been corrupted and not simply modified voluntarily by the user?).
My personal opinion: unless you have a specific case (like the point of this thread: attributes not kept from one OS to another), the user expects the permissions to be the same when unzipping an archive than when it was zipped. If the original item is corrupted, the user would get an error (e.g. This item could not be opened.) so it’s expected the copy behaves like that as well.