Mainly because Windows doesn't know the difference between OPEN and RUN.
And what is the difference between "open" and "run" ?
If you are at a system level, of course windows makes a difference between open (as in "give me a handle to a resource") or run (execute code).
If you are at a GUI level, and it's probably what you are thinking about, it's not about windows or linux or whatever, it's about the program you are using to do the "open". When you are clicking on an URL or an email attachment, the browser or mail program decides what to do with it.
On windows, many apps use the "ShellExecute" action with the default action which is the same as double-clinking a file on the desktop but it is not the only way to do it. On linux, there isn't a standard way of opening files so it's really app dependent.