Since switch to the lockless grab, shared busy for ahead/behind pages allows other threads to validate and map the pages readonly.
P.S. Alternative could be to change to exclusive busy for the said pages. This should be fine both from the locking PoV (we use NOWAIT) and correctness (no overwrite of the valid data). But it reduces the parallelism for zfs_getpages().