Can Terraform S3 remote state be kept in a different AWS account?
You can have two approaches:


Assume the role that has access to the AWS bucket. Assume this role in every account (don't forget to set up trust relationship). This is your approach. I think the issue might be some objects (state files) were created in a different way. Other culprit can be an account-specific KMS key that is used to create the objects. Don't forget, KMS keys are region-specific.
You grant access to other “users” via the S3 UI. (At the time of writing it is not supported by the Terraform AWS Provider.) 


Go to the S3 bucket -> Permissions -> Access Control List -> Access for other AWS accounts -> Add account
Find the canonical ID for the account you want to give permission to.
Set the bucket-level and object-level permissions. Beware, the Principal (owner) of the object will be different, so the account that actually hosts the bucket might not have access to it.