Basically we needed a request reply semantic. (forgive the explanation) Its where we have an instance of the front end sending a request to any of the back end servers. A single backend replies directly to the same front end instance.
Basically we needed something similar semantic to a load balancer, but in messaging form.
SQS is only a 1-n Queue system. So we can deliver a message to a single backend in a cluster, but we couldn't get it back to the producer without making a message routing system. We used Dynamodb and repeated polling, but that wasn't cheap to scale.
We might have been able use SNS as a broadcast bus of somesort, but that seemed like a backwards step.
We still use SQS for virtually everything else. NATS is kept for that one use case.