A typical error is to look for a = b when a or b are not in a canonical form. This can happen in several ways, for example recently in trying to look for real roots of a cubic polynomial.
I think in maxima there should be a way to use some stongequal predicate that do a lot more than a mere superficial test.
Free of %i is a quick test but we know that it must do some simplification in order to give a correct answer to the test for real numbers.
I think there a lot of cases in which there is the need of a more deep reduction or simplification layer and that this cases should be documented properly.
In the example of a test for a root to be a real number we could define a is real predicate isreal(x) using trigsimp, rectform and free of %i. But I think here is a pattern that should be solved more generally detecting the difference between a superficial test and a deep test to reduce to canonical form.