Before asking why you should be asking what:
First, run a query like this to determine used/free space in each data/log file for the current database:
SELECT dbname = DB_NAME(),
filetype = type_desc,
logical_name = name,
TotalMB = CONVERT(decimal(12,1),size/128.0),
UsedMB = CONVERT(decimal(12,1),FILEPROPERTY(name,'SpaceUsed')/128.0),
FreeMB = CONVERT(decimal(12,1),(size - FILEPROPERTY(name,'SpaceUsed'))/128.0),
MaxSizeMB = CASE WHEN max_size = -1 THEN NULL
ELSE CONVERT(DECIMAL(18, 1), max_size / 128.0) END,
GrowthRate=CASE WHEN is_percent_growth = 1 THEN CONVERT(varchar(12),growth)+'%'
WHEN growth = 0 THEN 'FIXED'
ELSE CONVERT(varchar(12), growth/128) + 'MB' END,
physical_name
FROM sys.database_files WITH (NOLOCK)
ORDER BY type, file_id;
Is the 100GB file actually full? Or is it mostly empty space?
If it is empty, you can do some planning to recover some of the empty space, with all the appropriate caveats about shrinking.
If it is full, use a query like this to find out what tables are using all the space:
SELECT s.Name AS SchemaName,
t.NAME AS TableName,
max(p.rows) AS [RowCount],
CONVERT(decimal(12,1),SUM(a.total_pages)/128.0) AS TotalSpaceMB,
CONVERT(decimal(12,1),SUM(a. used_pages)/128.0) AS UsedSpaceMB
FROM sys.tables t
INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY t.Name, s.Name
ORDER BY 4 DESC
If you know what table has grown, that should lead you back to whatever process might have contributed to it.