Во-первых, ваше совпадение с "TaskTag" не допускает пробелов или других "разделителей слов", однако ваше соответствие "TaskDone" требует, чтобы "Done" было дискретным словом из-за ваших \<и \> атомов границы слова.
Во-вторых, ваше совпадение "taskdone" написано только для того, чтобы выделить слово "Done".
Предполагая, что я правильно понимаю, что вы хотите, я изменил ваши два матча:
syn match tasktag "\(\s\)\@<=@[a-zA-Z0-9_ ]\+"
syn match taskdone "@.*\<[Dd]one\>.*" containedin=tasktag
Если вы еще этого не сделали, вам нужно будет указать выделение для двух совпадений. Например:
highlight link tasktag TODO
highlight link taskdone Statement