使える文字クラスが違う。
NaMeTOKEN(名前トークン) と CharacterDATA(文字データ) の略。
それぞれ細かい定義があるけど、
前者は「名前文字」が使えて、後者は「文字」が使える。
参考: http://www.ba.wakwak.com/~king/web/ref/attr_datatype.html

で、使い道だけど。
XHTML1.0 と XHTML1.1 の DTD を読み比べると…
http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd
http://www.w3.org/TR/xhtml-modularization/abstract_modules.htm
CDATA を使っていたのが NMTOKEN になったり、その逆があったりしてる。

上手く使い分けられるほどに使い道があるデータ型ではないというのがおれの結論。