Você está certo sobre a correspondência de palavra-chave que impede uma correspondência de sua nova região. Para contornar, você precisa redefinir as palavras-chave a serem contidas em sua região:
syn clear cStructure
syn clear cppStructure
syn keyword cStructure struct contained
syn keyword cppStructure class contained
syn region myCxxClass start="\(class\|struct\)\_[ \t]\+" end="}[^;]*;" contains=cStructure,cppStructure