This is hard to answer as you are already citing articles explaining the difference.
But let me try it anyway.
With garbage collection, you have non-deterministic memory management, and since the GC starts your finalizer, you guarantee, but not deterministic resource management.
This is good, in the sense that you know that things will be cleaned.
However, this is bad, because you do not know when this will happen.
For example, if you open a file and lock it while you open it, not knowing when the file will be available for opening again later, this is bad, but the guarantee that it will be closed at some point is good.
Dispose and IDisposable serve for this bad part by adding deterministic resource management. You choose when you need to manage your resources, close a file, network connection, database connection, whatever. This is your choice, and you usually get rid of the resource when you no longer need it. That way, when you no longer need the file, you delete it so that it remains open. The object will remain in memory (without deterministic memory management) even longer, but the file will be closed when you say so, ready to open again immediately.
Thus, you get deterministic processing of resources and combine this with non-deterministic memory management, and you get the best of both worlds.