Добрый день.
Вы удаляете ссылку на объект в переменной user, но не сам объект и не саму абстрактную ссылку (их может быть много). В js нельзя удалить объект, его удалением занимается garbage collector, вы можете удалить все ссылки и тогда объект будет удален из памяти.
При передачи объекта в замыкание, там сохраняется ссылка на него, а не на переменную user.
Собственно, даже чуть более простой код будет работать точно так же:
let object = { test: 'hey' }
let another = object
object = null
console.log(another)
// { test: 'hey' }