In all of the UNIX-style OSes I know of, shebang interpretation is left to the kernel, not to the shell. the #! is basically just another magic number for a particular executable type.
The kernel execs the interpreter specified, passing the fully qualified name of the script as the last parameter.