go.mod is not a lock file and go's module version selection may pick versions different from what are written in go.mod require statement. But most of time, we expect the versions appearing in go.mod are the versions actually in use. Especially, when using go.work or replace or exclude come into play, the difference can be sometimes confusing.
How about surfacing this when the versions chosen by Go and written in the main module's go.mod are different?
Either using 1) inlay hints next to the require statement or 2) informational diagnostics on the require statement.