No database will ever automatically release free space back to the file system, but all data in your tempdb is temporary in nature and should be dropped as soon as the transactions using it have completed, hence freeing up space within the allocated files and mitigating the need for file growth if you have a reasonable amount of space to begin with.
Your core setup of tempdb sounds reasonable enough. ;-)
It sounds like you might have som poorly written code running on your server - perhaps some developer forgot to include tempdb cleanup so they're just adding more and more temp tables and not dropping them when they're done.
If so, the solution is to fix the "broken" code. Temporary workarounds can be to either keep growing the tempdb, delete stuff manually or keep restarting your server...
Norwegian DBA, blogger and generally a nice guy who believes the world is big enough for all of us.@vegard_hagen on TwitterBlog: Vegard's corner
(No actual SQL stuff here - haven't found my niche yet. Maybe some day...)
"It is better to light a candle than to curse the darkness."