I'd say it depends. If you have a very complicated logic to determine your target URL or maybe even need to dynamically compose them based on some custom logic then storing them in a KVM or deriving them from API policies can definitely be a viable option.
Here is a list of advantages of TargetServers:
* Existence of referenced TargetServers are validated at deploytime
* Changes can be audited easily whilst KVMs can dynamically be changed at runtime.
* TargetServers allow you to configure TLS (e.g. Truststore) and mTLS specific to a server
* TargetServers support basic load balancing across multiple backends