The choice of Racket is because it contains several points of interest for what we're trying to teach. For instance, we will discuss advanced control (continuations), contracts, the typed/untyped boundary, etc., all of which are best represented in Racket. So the language itself illustrates some of the concepts we're trying to teach, making them more concrete and easier to experiment with (we don't first have to build the feature before we can play with it).
The ability to represent terms as s-expressions is actually a non-reason, given that we will not use s-expressions to represent terms. We will instead represent them as instances of a datatype, as in just about any other language.