Если это коротко запущенная программа и нечего «коммитить» на стороне COM, то можно позволить им уйти, верить этому или нет. GC придет и правильно освободит интерфейсы, когда это будет необходимо.
Если это длительно работающая программа (например, серверный компонент или для ее выполнения требуются часы и часы), или вам необходимо «зафиксировать» или «сохранить» изменения, лучшим вариантом будет выпустить их так же, как и любой другой VSSItem. после вызова GetChangedFiles(fileItem);
в цикле foreach.
Пример:
foreach (VSSItem fileItem in vssItem.get_Items(false))
{
GetChangedFiles(fileItem);
// fileItem.Release(); or fileItem.Dispose();
// or even Marshal.ReleaseComObject(fileItem);
}