I've found several circumstances where storing addition metadata regarding a specific service would be convenient however custom fields don't seem to be supported in the services API (Only the basic id, name, address, port). For example, a database name or a load balancer weighting.
I'm curious as to the design decision - is there a best practice this evangelizes or perhaps this is a future enhancement that could be made?
I understand that we one could use the KV store for extra info but it seems more convenient to bundle like-information together and not make multiple Consul lookups.
Metadata should go into the KV store. There are use cases as you describe. However, Consul is designed for the 95% of most common use cases (actual words of Armon Dadger, a Consul principle enginner). Arbitrary metadata lives just fine in the KV store.