`.equals` does call `.evalf`, along with a bunch of other things, but it doesn't return the evalf'd value.  I agree that this much checking should be unnecessary, but this logic is lifted straight from the original code.  I tried rewriting this in a variety of ways, but there were always edge cases somewhere in the test suite, so I ultimately left this bit unchanged.