Declaring variable and creating an instance of a class is not the same thing. The good practice for creating instance of a class is to only do it when needed.
Yes, normally, an instance of .NET class would be GCed automatically decided by the runtime (e.g our code usually does not need to explicitly call Dispose()). However, the classes in AutoCAD.NET API are not pure .NET objects. They are .NET wrappers of AutoCAD C/C++ objects. if not referenced object is properly GCed would depends on how the Dispose() is implemented in the .NET wrapper, which most of our Autodesk outside would have no idea. There had been a lot of discussions on if [AutoCAD object].Dispose() needs to be called or not during the first a few year after AutoCAD .NET API was released and the discussion still pops up now and then. The generally accepted approach is, any object your code created, not regulated by a Transaction needs to be disposed explicitly. You can search this forum and Autodesk's discussion forum in the topic of "to dispose or to not dispose".