This is what it says in the official documentation about finalizers:
// It is not guaranteed that a finalizer will run for objects allocated
// in initializers for package-level variables. Such objects may be
// linker-allocated, not heap-allocated.
I think it may have to do with the linker allocating some objects statically, so that the memory area for them is reserved and initialized with the data loaded from the executable file, along with the program code and constants.