It can reduce readability of the code [unless it is used in error path simplification, kfree(something) usually suggests kfree-an-object].
Consistency in coding style improves readability. Redundancy reduces readability.
The interface is simple and clear, and has been documented for decades, that is kfree (and free) accepts NULL. There is no ambiguity
here.
If you think "if (obj) kfree (obj);" is more readable than "kfree(obj);", fix the API to enforce it.
But if the kernel tree is full of "some caller checks NULL while others not", I hardly see it as readable. It'd just be confusing.
I don't actually like kfree(NULL) any time except error paths. It is subjective, not crazy talk.
Documented interface is not subjective.