Você já verificou se as sessões ficam abertas por muito tempo? Essas sessões que não estão fechando, podem ter terminado de utilizar o tempdb, porém não libaram o espaço utilizado.
O que sugiro é realizar um SHRINK dos arquivos de dados e quando houver esse crescimento novamente executar as seguintes querys para análise:
--Verificar sessões abertas que estão abertas há mais de duas horas sem executar nada.
SELECT s.session_id,
@@ServerName,
DB_NAME (p.dbid),
p.open_tran,
s.host_name,
s.login_name,
s.status,
est.text
FROM
sys.dm_exec_sessions s
INNER JOIN sys.sysprocesses p on s.session_id = p.spid
OUTER APPLY sys.dm_exec_sql_texT(p.sql_handle) as est
WHERE s.session_id > 50
AND s.is_user_process = 1
AND s.last_request_end_time < DATEADD (HH,-2, GETDATE())
--Verificar as sessões que estão consumindo mais recursos do TEMPDB
SELECT
*
FROM
(
SELECT
SU.session_id
,((SU.internal_objects_alloc_page_count+SU.user_objects_alloc_page_count)
-
(SU.internal_objects_dealloc_page_count+SU.user_objects_dealloc_page_count)
)/128.00 as Alocado_Data
,L.Qtdlog/1024.00/1024.00 as Alocado_Log
,st.text
FROM
sys.dm_db_session_space_usage SU
LEFT JOIN
sys.dm_exec_connections C
ON C.session_id = SU.session_id
OUTER APPLY
sys.dm_exec_sql_text(C.most_recent_sql_handle) ST
LEFT JOIN
(
SELECT
ST.session_id
,DT.database_transaction_log_bytes_reserved as QtdLog
FROM
sys.dm_tran_database_transactions DT
INNER JOIN
sys.dm_tran_session_transactions ST
ON DT.transaction_id = ST.transaction_id
WHERE
DT.database_id = 2
) L
ON L.session_id = SU.session_id
) T
WHERE
T.Alocado_Data > 0
OR
T.Alocado_Log > 0