Watch this Author's files
This is by design of the isreal function.
From the doc,:
If A has a stored imaginary part of value 0, isreal(A) returns logical 0 (false).
You may however expect that the returned number is not complex when the imaginary part is 0.