TF State file storage for multiple accounts

I am trying to understand the best practice for storing state files when you are deploying tf to multiple accounts. I understand that S3 buckets can be accessed across accounts with the correct permissions, but is this what should be done? Regardless you have to make a dynamo db per account I think so what advantage does sharing s3 bucket for all state files give us?