Well, MzScheme has had a bytecode compiler and native code compiler for a long time. The earliest mention I can find right now is 2003: http://download.plt-scheme.org/doc/205/pdf/mzc.pdf
Here's some up-to-date documentation (and note that MzScheme is now known as Racket):
http://docs.racket-lang.org/raco/index.html
http://docs.racket-lang.org/raco/API_for_Raw_Compilation.htm...
(I can't find the native code compiler. Did they make it internal to the JIT?)
If you just use Racket like an "interpreted language," as Arc does, then it will still compile each expression before executing it:
http://docs.racket-lang.org/reference/syntax-model.html?q=co...
Since Arc compiles each Arc expression to MzScheme before executing it, and since MzScheme compiles each of those expressions, Arc inherits this on-demand compilation behavior.