Потому что кто-то так решил и его голос имеет сильный вес. Ты всегда может отключить данное правило.
Связано это с тем, что в некоторых браузерах все плохо с итераторами, а for..in итеррирует в добавок и свойства прототипа, что как-бы четко поясняется в документации, а полагаться на hasOwnProperty нельзя в некоторых случаях (не поясняется почему), наверно потому, что его могут переопределить для объекта, но его могут переопределить и для Object, и тогда все плохо. Либо недостаточная поддержка браузерами.
Резюмируя, нефиг итеррировать по свойствам объекта, для итеррации есть массивы. А свойства на то и свойства, чтоб к ним обращаться напрямую.