Well, for early starters of Acad .NET API programming (Acad 2005/6), there is no ObjectId.GetObject() method, it only has obsolete method Open().
Lots of my base code was created on Acad2006 and still in use. So I have been acustomed to always use Transaction.GetObject(), even I later knew ObjectId.GetObject() was available since Acad2007 or 2008. Yes, I either start a new transaction in the sub function, or pass the top transaction to the sub functions. Just out of habit.