Is it really that hard to tell whether or not a call is in a tail position? It's like type inference - it has a major impact on what kind of code is idiomatic, and if you know the language, you'll need to understand it. Still, TCO is a lot less complicated than pointers or all of the conceptual baggage necessary to design OO class hierarchies well.
"Is it really that hard to tell whether or not a call is in a tail position?"
It is easy to forget when you are focusing on the logic of the code, and easy to change accidentally. Clojure explicitly tells you when you are trying to recur from a non-tail position, which is rather nice, and not possible with implicit tail call optimization (how do you know if the programmer really wanted a tail call or not?).
Having the compiler catch your mistakes is always nice.