I ended up with a strong preference for using screen(1) and the standard REPL. In fact I have often thought about putting my employer's toy into a screen session even for the unattended server mode. The Lisp is difficult to shut up anyway and sometimes you have to play special tricks if there is no terminal on stdin for the REPL. With a screen session you can do much better post-mortem debugging, too. Stream synchronization from error messages also works as if there was a terminal (because there is a terminal). This can be handy when people do output not keeping in mind it might go into a buffered logfile or so.
SLIME is really too fragile for this.
Any kind of TCP listener/evaluator opens a huge can of worms about authorization. With screen(1) you will have to have a ssh login, so your ssh setup will take care of auth, with the same ssh agent.
The only pain is sending forms from programs but I think *that* is when you do a custom named pipe (or TCP) solution and you do not use the same thing for interacting with the Lisp and for non-interactive evaluations.
Martin