What initializes instance fields with their respective default value, when never explicitly initialized?
The runtime itself. The runtime needs to allocate 'something' to its variable address. For value types it would be false (bool) and 0 (numerical), and for all reference types (including string) the reference would be the equivalent of not storing an address, aka null.