Despite the madness of the code that would be generated if the compiler allowed it, since it doesn't, you can expect a list of linker errors so long, that you can go to bed and wake up in the morning and it's still spewing to stderr.
Source: I've implemented programs similar to busybox before by merging programs originally intended to be compiled separately, albeit on a smaller scale than an entire Linux distribution.
The Linux kernel has dynamically loaded modules but you can build modules as statically part of the kernel. 'Y' instead of 'M' in the config.
It doesn't make sense to "statically link" a kernel to a program, or multiple programs together, which I read your comment to suggest. That would be a different thing than the term "statically link" refers to.
That's kinda what a Unikernel is.
https://en.m.wikipedia.org/wiki/Unikernel
In userspace, you can do what busybox does and link a bunch of programs together with a single main function that decides which program to actually run.
I think if you give busybox enough time, it might happen.
That's if systemd doesn't get there first, of course...