если убрать весь пафос WeakMap, с простыми переменными всё точно так же:
let value = { name: 'iOne' };
let x = value; // ещё одна "ссылка" на объект
value = null; // или  delete value; – то же самое
x //  { name: "iOne" }
Разберитесь с основами: 
Объекты и ссылки на объекты. Т.к. в объекте weakMap есть ссылка от ключа на объект-значение — объект вполне себе сохраняется. Главное, что всё ещё жива ссылка на объект-ключ 
key.
Особенность WeakMap  – в тех объектах, которые выступают не значениями, а ключами.
const weakMap = new WeakMap();
let value = {name: 'Ivan'};
let key = {};
// добавление нового элемента
weakMap.set(key, value);
// обнуление
delete key;
Теперь, хоть объект, на который указывала переменная 
key всё ещё используется в качестве ключа в WeakMap, сборщик мусора, при срабатывании, таки удалит его.