The main reasons being:
- make it easier to back up the site (attachments don't change frequently, don't need to be backed up daily, no point taking up extra backup space with multiple copies of them)
- overcoming storage limitations (many hosting providers don't give enough space for a busy site with a lot of attachments)
- possible performance benefits if using a CDN
Workflow might be along the lines of:
- user uploads attachment, stored on XF server as normal
- cron script periodically copies new attachments to external server
- flag set for that attachment to say, "serve from external server rather than local"
- thread display checks flag to determine URL to content for when user clicks on an attachment
I do something similar to this on ZooChat where photos in my gallery are uploaded by users to the site before a script moves them to Amazon for storage plus CloudFront CDN. Works well - but I virtually wrote the gallery routines from scratch, so it was relatively easy to add the CDN functionality.