There are many reasons why running an .exe from a zip could cause problems.
Firstly as mentioned, when you "run" the file, it is actually extracted to a temporary location, then executed.
Immediate issues mean, any files that might have also be Zipped with the EXE will likely not have been extracted, and therefore not accessible. This may include libraries required to run the .exe, config files, even things as simple as help files.
Also even if you did zip everything "you thought" the file needed (into the zip file), and these are some how extracted, modern installations frequently include things like:
Data added to the windows registry
library/driver files stored in other locations, as they may be shared with other programs
registration of library/driver files
That's just the basics
You then have the other potential added issues, of access/file rights, these may be missing and the program may incorrectly execute as a result.
Then even if you get the program running, most modern apps require the saving of some sort of config data, for future usage. As the app is in a temp location, it will likely be deleted (along with any files it creates), and virtually impossible to find again anyway (yes I know it's not actually impossible, but it's not very manageable). And it's worth noting anything created by the app will likely not find it's way back to the zip.
So unless you have a self-contained app that required no config saving, and is specifically designed to be run as a standalone app, best not to try and run it from a Zip.
If you are trying to make something portable, it's usually a better option to use apps designed to be run from a memory stick or virtual drive.
Hope this helps.