Um CTE (não recursivo) não usa cursores. É uma abordagem baseada em conjuntos. Essa é a grande diferença em relação ao uso de cursores. Mas isso é verdade para não usar cursores em geral.
Os cursores devem ser evitados onde for absolutamente possível (como tenho certeza de que todos sabemos).
Um CTE não é necessariamente melhor do que usar uma tabela derivada, mas leva a um código TSQL mais compreensível. Um CTE é realmente apenas um atalho para uma consulta ou subconsulta; algo semelhante a uma visão temporária.
A situação em que os CTEs podem não ser a melhor abordagem é quando o otimizador do plano de consulta obtém estimativas de linha imprecisas para o CTE.
Pergunta relacionada:Quais são as vantagens/desvantagens de usar um CTE?