Это определенно будет работать с WeakReference без каких-либо проблем, поскольку System.String - простой ссылочный тип. Было бы интересно увидеть ваш вариант использования WeakReference, так как он не соответствует «обычному» использованию WeakReference.
Из Руководства MSDN :
Используйте длинные слабые ссылки только тогда, когда это необходимо, поскольку состояние объекта непредсказуемо после завершения.
Избегайте использования слабых ссылок на небольшие объекты, поскольку сам указатель может быть как большим, так и большим.
Избегайте использования слабых ссылок в качестве автоматического решения проблем управления памятью. Вместо этого разработайте эффективную политику кэширования для обработки объектов вашего приложения.