Is there a way to determine what caused the last growth operation of my database (MDF file)?
You could use the undocumented function sys.fn_dblog filtering by the collumn transaction name like this:

SELECT [Transaction Name] 
FROM sys.fn_dblog(NULL,NULL) 
WHERE [Transaction Name] IS NOT NULL;


On the query result you should look for SetFileSize



The line before the SetFileSize will show the last event that occured to cause the growth.