I normally offload my images to a network attached storage box whenever I take over 100 pictures. I'll delete most from the card after but leave a few so I can show them off right from the camera or look back if I'm trying to recreate a pose or check what exposure settings I used for a particular shot. (After copying to my NAS though, so this is a spare copy.) Every so often I'll pull everything off the card, reformat it in camera, and then put a few select images back on the card.
Formatting definitely helps bring your card back up to original speeds*, especially in continuous shooting or quickly cycling through images in playback.
I'm currently hitting the limit of my standalone NAS (Buffalo LinkStation LS-WVL/E running a pair of 2TB HDD's in a mirror setup) so I haven't been able to offload my cards for a while but I'm working on setting up an old computer with
OpenMediaVault (OMV) for more storage. I'll be keeping my more important files on multiple HDD's using
SnapRAID, with less important stuff that I could replace stored on single disks. My Buffalo LinkStation will go to my mother-in-law's house and I'll set OMV to sync my most important files there in case of loss due to fire, theft, or toddlers
.
*Flash memory doesn't get fragmented the same as hard disks, but when you write and delete files you end up with partially filled data blocks. Data blocks are read and written as whole blocks, so to add more data to a partially filled block the controller has to read out what's in the block already and re-write the whole block again with the new data added. Writing files to partially filled blocks require more blocks to be read/written than if writing to empty blocks. Empty blocks are also written without reading them first, which is why a freshly formatted empty card is fastest.
This is also why SSD's lose performance over time, especially with random writes. Newer SSD's get around this with a TRIM function that restores performance by merging partially filled blocks and freeing up full blocks for writing. (Similar to defragmenting, just on data blocks instead of files.)