Back in the day when we had fewer package choices I spent a lot of time building RPM packages. It has the concept of a "source" package and a "binary" package. A lot of our current docker images all start out pretty similarly, they pull whatever source from github and build it. Unless we keep the source around in the image that gets built, there's no guarantee that in the future that source from that github repository will still be available if we need to update the docker image, or for that matter look at the source code that went into the image. For some of the programs we use, this is a real risk of the source going away.
In most cases, the source really doesn't take up that much space so if we really wanted to we could leave it in a /src directory. But with multi-stage builds, I wondered if it might make sense to have a "src" stage which simply pulls out the source and unpacks/untar it. You could then save this target as a "-src" image just in case you ever needed it again. It would have the added benefit that when debugging the build stage, you won't have to repeatedly keep going back to get the source code, since most of our Dockerfiles leverage '&&' pretty heavily in a large RUN statement.