I have come across something like this with leading in the past.
There is a default value for leading ("(Auto)") that will return an error for
alert (app.activeDocument.activeLayer.textItem.leading)
Only if leading is different from "(Auto)" one gets a value.
Which makes sense, I guess; by only explicitly storing a property if it is different from some defined default one can potentially save data.
One work-around is using a try-clause.