I use:
mit-scheme --batch-mode --load file.scm --eval '(exit)'
This mostly does what I want, although it still pops into the REPL if the script encounters an error, rather than just terminating with a nonzero exit code. (Which is what I'd like it to do, and which is what most other Scheme implementations do.)