None of these are strictly necessary from a correctness POV. This simply makes things easier to write asserts for and reason about. Note that NOBUSY grab calls still serialize against XBUSY in case the xbusy holder is removing the page. So this is not actually introducing new serialization, it's just not released inside the grab call but instead inside the caller after the page has been set valid. I believe these are the final places in tree that directly set VM_PAGE_BITS_ALL.
In the future I may use vm_page_valid() to set a bit in the busy lock indicating validity which will allow me to optimize busy for mapping.