Alternatively (but harder I think), abstract the operations you need from the Scheme system, and have the common swank code call into the system specific implementation of the interface.
i don't think it would be harder. this is how the official slime codebase is organized, and there are major chunks of code that are shared (e.g. the entire inspector). and this kind of separation (common stuff + one file for each CL backend) is also easier to understand than a code full of cond-expand (IMHO).
it's also beneficial to mimic the official organization to make it easier to follow its future changes.
i asked the maintainer of swank-chicken (Nick Gasson) what he thinks about this, but no answer yet. swank-chicken is the most alive and maintained on my radar.