A technical comment: Why not simply set source-directory in
site-start (or default.el if Emacs doesn't have site-start)?
Considering this a low-level default like "invocation-directory" or "installation-directory" which are both set during this initialization phase one the C side. Therefore, for consistency reasons this is a good place to set the default for "source-directory". Furthermore, there is a comment in this file like:
/* Vsource_directory was initialized in init_lread. */
which was there even before my patch, so I believe I'm on the right track.