If I remember correctly, Bonjour does compact the database more frequently than the other sync types, but that doesn't mean that we'll compact it all the way down to one zip file after every sync operation.
In fact, I can think of cases where that would be bad. Example: you have two macs and an iPhone that you sync via bonjour. Your phone is on the network, but OmniFocus is not running. If the Macs compact their database down to one zip file, the phone will have problems when it tries to sync.
(It's not clear that the original poster is using Bonjour - if they aren't, compacting their database down to one zip file will cause the same trouble.)
What all we do is compact any transactions that we're sure all 3 devices know about.
It sounds like the original poster has a device that hasn't synced in a long time, so we're holding on to all the individual transaction files, waiting for that device to catch up.
The way to check this would be to open up the Sync pane of preferences and press the "Show Clients" button. A list will slide out - what is the oldest entry in the "Latest Sync" column? Syncing that device will cause a lot of those transaction files to go away an hour later.
(We hold on to transaction files for an hour after any given sync for reasons I can't remember off the top of my head. The folks that wrote the code can probably explain the details.)