I’m guessing that Matz wanted conceptual simplicity of “truthiness” as such – the only “false” values are false and nil. Period.
Using just false would be the cleanest but there is understandable need for including nil. To include the integer zero as a special case might open the mental floodgates of questioning truthiness of other types. What about strings, is "" false? And arrays, is [] false? And hashes, is {} false? Ad insanitum (see JavaScript)…