I guess an OS should be functional at its interface to the user, and only imperative deep down to keep things running efficiently.
However, note that this hypothetical functional layer on top also would ensure efficiency, as it enables lazy evaluation. This type of efficiency could under certain circumstances be even more valuable than the bare-metal performance of system programming languages.