The reasons for this should be pretty clear, which is that we cannot guarantee the security of the system to allow for arbitrary elements to be loaded into memory at boot time. In the early stages of starting Windows, the system needs to be locked down and execute along a very carefully monitored and known state, as tools such as firewalls and anti-virus checking are not yet available to secure the system. And, of course, even though we’re sure everyone would follow the requirements around image size, content, etc. due to performance, we would not want to build in all the code necessary to guarantee that all third parties would be doing so