I prefer to write my state-machines as transitioning with tail-calls, and I do get called for it. It's relatively easy to switch something written in that manner to using a loop with a trampoline, so I do so when my collaborators request it.
Even with SBCL, for example, it doesn't have tail-call optimisation for all architectures at all optimisation levels.