On page 4 of the yellow-paper, the definition of an "empty" account is provided.
An account is empty when it has no code, zero nonce and zero balance.
A formal definition is then provided, where "no code" is taken to mean that the account's codeHash is equal to the KEC hash of the empty string.
The paper then goes on to say:
Even callable precompiled contracts can have an empty account state. This is because their account states do not usually contain the code describing its behaviour.
This confuses me. If the account has code, wouldn't its codeHash != KEC(""), and thus not be empty?