It's part of a defense-in-depth strategy. If one of your pods is compromised, it gets harder to exploit that by reading traffic. It might be compromised by insiders or external attackers.
Read access tokens might be used for replay attacks.
Well if this is "necessary" probably depends on your requirements. It might not get you immediate business benefits. However, "just" reading data can already be a serious security breach.
That being said, using service meshes like Istio it is relatively easy to implement mutual TLS between services.
Also, Istio provides more security features then just encrypting communication between pods. It also uses the concept of identity and makes it possible to specify authorization rules on the level of services instead of IP addresses (which might be hard to manage).
In addition to security benefits, Istio can also provide other features like advanced traffic management or features which make it possible to move common cross-cutting concerns like metrics, tracing, CORS policies, JWT validation into the mesh.
Those may provide more tangible benefits for application developers and maintainers (compared to security, which might be only relevant once it is compromised...)