You always want "one" alertmanager (usually in a cluster of 2 or more). The alertmanager is meant to be a single clearing house per organization. A place where you can see, silence, and route all alerts.
This is a separate concern from where you _generate_ alerts.
In a multi-Prometheus environment, the best practice is to generate alerts as close to the data as possible.
* If the data you have is in Prometheus, run the alert rules in Prometheus and have it generate alerts.
* If the data you have is cross-Prometheus in and only in Thanos, run the alert rules in Thanos Rule.