Typical programming style in Common Lisp is procedural, not functional.
The CL spec doesn't guarantee tail-call elimination, and most CL implementations don't guarantee it either (it could be on or off depending on the current optimization level). So most people don't bother relying on it.
True. My CL code is atypical because I prefer functional style to iterative style. I know how to use declarations to turn on TCO for implementations that support it, which is most of the big ones. ABCL being a notable exception.
Whoa, what a surprising fact! I had not considered TCO in LISP was "nice to have." That's a good example where it's easy to hack but hard to make production ready.
IMHO a Common Lisp without TCO is not a serious tool because I cannot write tail-recursive code with it.