This makes it easier to downgrade kernel when it stops providing some syscall required by libc. In this case, it is enough to downgrade libc as well, our crt1 delegates all non-trivial work to libc::__libc_start1(). With static init, the /sbin/init should be downgraded as well, which might be not easy. This does not mean that we support forward compatibility.
Also, as a safety and convenience aid:
bin/sh: make it possible to use as interactive init If the /sbin/init binary is broken somehow, the way out is to set the loader environment variable init_path to something else. The most natural choice would be either /bin/sh or /rescue/sh. Unfortunately, this does not work because the init process starts withoud stdin/out descriptors. Make it nicer to users by teaching /bin/sh startup code to open standard descriptors on /dev/console if the shell is run as init.