It appears to me that racket and typed/racket behave differently with respect to errors that occur during the evaluation of arguments to check-equal?. Specifically, the program
check-equal? is indeed a macro, especially when it is called with arguments. It alone also expands to a function, which is kind of confusing. And the documentation might cause more confusion, as it says check-* are procedures.
Although checks are implemented as macros, which is necessary to grab source locations (see Custom Checks), they are conceptually functions (with the exception of check-match below).