Este es un duplicado, pero no tengo tiempo para encontrar el original.
Si implementa IDisposable, y si lo creó, entonces debe llamar a Dispose en él. Es por eso que el desarrollador de la clase hizo que implementara IDisposable.
El recolector de basura no llama a Dispose en todos los objetos que implementan IDisposable.