The use case I have (a stream logger who's printed objects are automatically presentations where appropriate) is precisely as above though: I want to print to a memory buffer and then dump that to the dedicated stream. When running a bunch of threads this still isn't threadsafe behavior by any means but it reduces the critical section to just (write-sequence<short-message> stream).
I would suggest to create a solution with a dynamic variable that is a list of eligible streams. And it should only kick in dedicated mode.
There isn't really a dedicated mode; the behavior is geared around the stream it is writing to, not a general mode we are in.
I made a version with a dynamic variable list of additional eligible streams[1]; the variable is only used if *use-dedicated-output-stream* is true. Beyond that there isn't anything beyond the documentation and good sense that enforces it.
I wrote a macro that tried to provide that guard-and-buffer but it ended up looking fairly specific to this use case so I don't think it is really worth including.
For your use case, an interesting solution could also be a custom string stream class that queues up the strings and presentation markers. This would be in parallel to the pretty printing streams in Allegro CL and my patched version of SBCL's.
While a fun idea that appears to be a lot more work vs an already working system.
[1] http://github.com/UnwashedMeme/slime/blob/master/contrib/swank-presentation-...