Is it really arguable? I'd be surprised if anyone took longer to fix a bad format string based on clang's output than on ocaml's.
Printf is a trivial example – good output is mostly useful because of ubiquity and C's unsafety.
I believe what sets racket apart is mostly their mix of tech and culture:
- their macro system, whilst being extremely flexible, preserves enough source location information that you can give good error messages
- due to their pedagogic background they care about good error messages took effort to tool for them (e.g. syntax-parse: http://www.ccs.neu.edu/racket/pubs/icfp10-cf.pdf)
By contrast, common lisp and to a lesser extend clojure are also flexible but produce pretty bad error messages (and both have a culture that strongly de-prioritises approachability). This comes at a real productivity cost that doesn't disappear completely even with experience.
In lisp you can write a nice SQL like language or a math DSL without resorting to string parsing. In ocaml you kinda can't because the base syntax isn't that flexible. So I'd expect the problem to be worse and I don't think types are a magic fix. The worst and most voluble compiler error output known to man must be C++ template metaprograming errors.