beanstalkd is an in-memory queue, it uses external files only for error recovery (it can checkpoint jobs to a binlog, to recover in case of a crash). So if the jobs haven't been deleted, they're still there in memory.
How are you measuring memory use? Does the beanstalkd process virtual size shrink too? Could the contents have been paged out to disk, thus no longer show up as resident? (or under "physical memory used"?)