Edit: The documentation of `named-let`[1] explicitly mentions that it supports tail call optimisation, but the documentation of `cl-labels`[2] doesn't. So maybe the optimisation should be viewed as being tied specifically to `named-let` (or maybe the documentation of `cl-labels` should be updated to mention that it also supports the optimisation).
[1]: https://www.gnu.org/software/emacs/manual/html_node/elisp/Lo...
[2]: https://www.gnu.org/software/emacs/manual/html_mono/cl.html#...