I found this paper:
Conditional value-at-risk for general loss distributions by Rockafellar and Uraysev
which says CVaR is coherent for general loss distributions, including discrete distributions.
I think that I was confused by other authors who were also confused with the definitions of CVaR. In particular, in the following paper, the author mistakenly stated that Tail Conditional Expectation (TCE) is same as CVaR, and they are not coherent.
However, TCE is not same as CVaR in general. If the underlying distribution is continuous, they are same.