The issue is attachment files are served within Xenforo, which allows for things like permission checks and counting views/downloads. Because of this, Cloudflare won't cache attachments by default (you'll see the cf-cache-status: dynamic header) on these requests.
If you can live without permission checks and view counts for attachments, then you can add a page rule for Cloudflare to cache the /attachments/ folder. Even better would be offloading your attachments to another server/service (eg using
S3 compatible storage - Wasabi+Cloudflare would be cheaper if your bandwidth needs aren't too high). If that isn't an option, even just disabling the permissions and views check for attachments and allow attachments to be served directly by the HTTPd (not sure if there is an existing addon that'd make this possible). This would mean every attachment request isn't having to go through Xenforo/PHP/SQL queries, etc.
Note that Cloudflare's total cache size isn't unlimited, so your entire 1.5TB won't be cached at all times by Cloudflare. Depending on the amount of traffic you see, Cloudflare could still hit your server with a few 100Mbps traffic (eg from our experience, ~1.5TB attachments and ~1PB/m traffic sees spikes of ~400Mbps from Cloudflare).