Странная, зависящая от версии .NET Framework, проблема со сборкой мусора?
А что тут странного? GC вам ничем не обязан, если объект перешел в следующее поколение - Collect его может проигнорировать.
Попробуйте GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true);
Собрал VS 13 из исходников.
Если запускать Resharper'овским test runner'ом - тест проходит
Если запускать Resharper'овским test runner'ом в debug -  тест падает
Если запускать VS test runner'ом - тест падает
Если сделать консольное приложение - то остается 1 объект в WeakReferencesStorage
Возможно стоить копать в сторону работы GC в debug окружении