There are (at least) 3 options & it may be a combination thereof
1. a lot of data has been deleted from the DB.
DBs do NOT auto-shrink, but they often auto-extend
2. the DB was heavily fragmented;
given the numbers above, may be part of the problem
3. if you are using fixed length fields eg CHAR instead of VARCHAR, I think the DB always creates them as full length inside the DB, due to the matching algorithms used, but its possible that mysqldump only extracts the actual data ie without the trailing spaces/blanks.
The easiest way to test is to grab a spare system from somewhere and reload the dump.
If DB stays small, its options 1 & possibly 2
If DB inflates again, its option 3.
You should have a good read over at MySQL http://dev.mysql.com/doc/refman/5.1/en/