Если что-то реализует, то это означает, что он, вероятно, реализовал собственный финализатор. Вызов dispose должен (если написано правильно) подавить CG от его вызова. Если CG требуется для вызова финализатора класса, CG придется выполнить дополнительную работу по удалению объекта из памяти. Он будет продвигать его на следующий уровень компьютерной графики, поэтому объект будет оставаться в памяти гораздо дольше.
Так что, даже если вы не думаете, что это так важно называть, в любом случае, это, вероятно, хорошая идея, поскольку, скорее всего, это позволит более эффективно собирать мусор. По правде говоря, если есть Dispose, он, вероятно, существует по какой-то причине и должен использоваться. Поместить его в оператор using - действительно самый простой способ справиться с этим.
Информация о Финализаторах и GC в .NET