Потому что вначале все начинают методом проб и ошибок. Чтобы не писать методом проб и ошибок, нужно сразу знать все уровни системы. А поскольку система часто довольно сложна, а времени мало, то идет метод проб и ошибок. + недостаток документации.

Отсутствие или наличие отладчика с этим подходом весьма слабо кореллирует.

Если несколько лет подряд пишешь под одну и ту же систему/платформу, то её уже знаешь, и метод проб и ошибок уходит. Собственно этот самый метод проб и ошибок -- это банальная попытка исследования даденой системы путем экспериментов.