The she-bang notation is used by the kernel when it launches an executable. If it sees the she-bang, it loads the specified interpreter (can be anything at all, not just a shell), and passes the name of the script as its first commandline argument. The interpeter then opens the file, and interprets the contents.
'Sourcing' is done by an already-running shell itself, and is a behavior of those shells (possibly all major shells).
[EDIT] #! - the Unix truth as far as I know it.
explains this in some detail.