The zero egress cost is big and IMO their free tier is very generous. It’s S3 compatible so if you use any libraries it’ll just work™. One note is that AWS recently released static pricing for Cloudfront - I haven’t explored it in depth yet but it looks compelling if your primary use case is serving data out of S3.
I’d probably switch to S3 at least for app storage if I moved apps into the AWS ecosystem. It’s just easier if you’re already in AWS.
I run multi-region on AWS and S3 is deeply integrated with everything - IAM, CloudFront, ECS, Lambda. Switching to R2 would save on egress but I'd lose the tight integration with the rest of my stack. That tradeoff isn't worth it unless bandwidth is a significant line item.
R2's zero egress pricing is genuinely compelling for anything serving large files publicly - media, assets, user uploads. If your use case is "store stuff and serve it to users," R2 wins on cost. If your use case is "store stuff and process it with other AWS services," S3 wins on friction.
R2 also has very generous egress: completely free outbound data transfer with no bandwidth charges (unlike S3). That's the main reason I'm comparing the two for my use case.