Why is Log File Auto Grow sometimes performed by my application user and sometimes by sa? Many database tasks (including Data File Auto Grow, Log File Auto Shrink, and Data File Auto Shrink) are completed only by the sa user, but Log File Auto Grow seems to be associated with both sa and my application user via .Net SqlClient Data Provider. Is there a reason for this?
Whichever transaction requires additional log space will grow the log file within that transaction, so it can complete.

So if userA is performing a bulk load of data and uses up all available space in the log file, you will see a growth event for the log being called by userA.