Ответ 1
В соответствии с MSDN:
http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx
На самом деле возможно, что ваш пример: GC.SuppressFinalize(foo) будет использоваться в определенных сценариях, но не в сценарии общего шаблона размещения.
В примере вы можете написать какой-то шаблон управления удалением для многих объектов вместо реализации общего шаблона удаления из вашего объекта. другой вариант - если вы хотите, чтобы объект оставался подавленным, а позже, возможно, потребовал его? никогда не делал этого.. но это возможно.
Возможно, да... скорее всего, произойдет - и, возможно, никогда.