It’s always better to use the IAM Policies, as it’s a centralized location where we can give permissions to different AWS resources and not just S3. But the ACL and Bucket Policies must be set from the S3 Management Console. Besides these there are a few limitations on the policies. More differences about the differences between these three ways of giving permissions to the S3 bucket is mentioned in the AWS Documentation.