I'm sure there are many, many more techniques involved in making a build reproducible. Hey, they achieved >90% already!
To fix that kind of thing, patching is required.
https://reproducible-builds.org/specs/source-date-epoch/
For things like build numbers, there's a tool called strip-nondeterminism that cleans them up:
Or... deeper parts of the compiler toolchain change, and the application doesn't re-build without changes.
Taken directly from https://reproducible-builds.org/:
"Second, the set of tools used to perform the build and more generally the build environment should either be recorded or pre-defined"
FWIW, I'm a committer on a Linux distro specifically constructed to guarantee build reproducibility (nixos.org), so I'm pretty sure I know what is generally meant by "reproducible builds" in common industry vernacular. Byte-for-byte is important, but that's hardly the whole picture.
"With this we can detect problems related to timestamps, file ordering, CPU usage, (pseudo-)randomness and other things"
https://tests.reproducible-builds.org/debian/index_variation...
It's hard work to set up a project where you can actually get exactly the same binary over and over again.
I think asking "why is Debian not reproducible" is missing the mark a little - when everything else (Windows, macOS, FreeBSD, etc etc etc) is probably not reproducible, the better question is perhaps "why is Debian trying to be reproducible, and why aren't other projects talking about this just as much" :)