What reason is there for using service discovery instead of Kubernetes internal dns
The service discovery by DNS name itself (inside the cluster) is somehow similar.
Other technologies are adding more functionality to the stack like: Encrypted Traffic, Connection Authorization, Proxy Sidecars, etc
You can take a look here: https://www.hashicorp.com/blog/consul-1-2-service-mesh as an example.
Those frameworks will help reduce code on each container (example: retry/circuit breaker) by adding this 'plumbling' at the service level.
--M