Some algorithms performs different actions depending on noexcept specification (see std::vector::resize() ). Also the compiler may remove exception handling code for a non-throwing function
Immediate functions are called at compile-time. While C++20 does in fact have compile-time containers now, their performance is kind of irrelevant to runtime code. And it would be easy enough for them to use different internal implementations based on if(is_constant_evaluated), which would benefit more than just noexcept queries.
But even then, one of the goals of constexpr coding is to make compile-time code be like runtime code. So if you have a class that should only exist at compile-time and has a consteval move constructor, then the user should think of it exactly like they would a runtime class. So if they would make the move constructor noexcept in a runtime class, it should be in a compile-time class too.
And that's doubly important, since it preserves the ability for compile-time code to be able to throw exceptions in future versions of the language. This is possible particularly if P0709: Static Exceptions gets into the standard.
Also, immediate functions only ever exist at compile time, which is a context that doesn't have exception handling. So whatever the compiler is doing to build code for a constexpr function, it doesn't involve exception handling machinery. So making them implicitly noexcept for code generation purposes makes no sense.
Lastly, consteval is ultimately built as a minor change from constexpr function declarations. Even the implicit inline comes from consteval meaning constexpr, rather than consteval itself. Adding a new semantic to consteval would be making a significant change.