Welcome to the world of database bloat.
All MS software has the problem of bloat because they tend to not re-invent wheels. They all use pretty much the same memory reclamation software inside the programs. This "garbage collection" software does not attempt to dynamically reclaim used space. They leave it around for the next compaction. Anything you do slowly adds space to the DB file. There must be literally dozens of things you can do that will claim temporary space and then release it. But released space is merely MARKED for release. It is not actually released until you run a compaction process. So if you say you have not done this before, I believe the reduction you described.
Now, here's a way to make that into something practical. Don't compact again for a little while. (Only a little while, though.) Now every day or so, record the date & time vs. the size of the DB file. Take at least a few days worth of data, maybe even a couple of weeks worth. Do a compaction. Take another reading of size/date post-compaction.
Plot size vs. date or run a linear regression. The slope of the daily data is your db's GROWTH RATE - the rate at which the DB grows overall.
After each compaction, note DB size. Eventually, after several such compactions, you will get a SECOND plot, which is the actual DB growth rate. The difference in rates, when expressed in the same time units, probably Kb/day or Kb/week = OVERALL GROWTH - ACTUAL GROWTH = BLOAT RATE = the rate of Access building discardable data structures that make it to the disk, thereby contributing to that difference in pre- and post-compaction sizes. From this information, you might be able to project certain critical times to do disk, management.