After doing C++/ARX for a few years you learn a few things and one that applies equally well to .NET is this:
If you 'new' it, delete/destroy/dispose of it - if you didn't, don't. There are exceptions to this, especially in ARX where functions will hand you back a string and the documentation explicitly tells you that you're responsible for deleting the string/memory.
A .NET example would be creating a new Database for use with ReadDwgFile - you 'new'ed it, so you're responsible for disposing of it, usually by wrapping the creation in a 'using' statement/block.
You're example where you're getting a group inside a transaction shows that you didn't 'new' it, autocad did behind the scenes, so it manages it's destruction/disposal - not you.
As far as the commit goes, it's been stated by a few from autodesk, that NOT commiting a transaction is expensive because it will cause a 'rollback', so you're better off commiting the transaction, even if you're only 'reading' objects, for performance reasons, rather than implicity (in your case) or explicitly causing an abort.
Make sense?