A Cloudflare R2 bucket with a custom domain - obviously, in retrospect - conflicts with the fly.io server A record. An easy work-around, in Cloudflare R2 buckets, was to replace the custom domain connection with a custom subdomain connection. That still generates a url to the bucket object but allows an A record at the root/apex domain to point to the server IPs.
None of that was immediately clear to me (it doesn’t just add a new record, as it indicates it will do, but removes the A and AAAA records from Cloudflare DNS). I got help from the Cloudflare community.