Could someone care to elaborate what are the main differences between Consul and Istio?
What would be the primary reasons to choose one service mesh over the other?
Well, I don't know how mature the service mesh aspects of Consul will be now, but the rest of it is a very mature product that provides a distributed K/V store like etcd and also provides service discovery via either REST or DNS.
Consul is not a service mesh. At its core it's a distributed key-value store which is commonly used for service discovery, configuration management and healthchecks.
I hope it helps