S3 + DynamoDB works well until your team hits ~5-6 people and you start having async workflows. Then state lock contention becomes real, and you're debugging "another plan is in progress" at 2am.
Terraform Cloud solved this for me, but the cost calculus changes if you're running tons of small stacks. I land on this split: TC for shared infrastructure (VPC, IAM, RDS), S3 for isolated per-environment stuff that doesn't need coordination. Keeps the bill reasonable while avoiding lock nightmares.
The compliance angle is legit though. If your auditors care where bytes live, S3 is your only option.