GC فقط Managed Resources رو آزاد میکنه ولی وقتی یک کلاس، Unmanaged Resources (مثل File Handle و ...) داره، باید IDisposable رو پیادره سازی کنه و در نهایت، استفاده کننده از اون کلاس با استفاده از using یا فراخوانی Dispose باعث میشه Unmanaged Resources آزاد بشه.
البته در مورد مثالی که زدن، MemoryStream منابع مدیریت نشده نداره و احتمالا Dispose نکردن سریح اون مشکلی ایجاد نمیکنه، ولی استفاده از using باعث میشه که این اطمینان وجود داشته باشه که هیچ ارجاعی به اون شی باقی نمیمونه و GC میتونه اون شی رو Collect کنه.
کلا Dispose کردن سریح اشیایی که IDisposable هستن (چه با using چه با try...finally) توصیه میشه.