Вы правы в отношении соответствия ключевого слова предотвращению совпадения вашего нового региона. Чтобы обойти это, вам нужно переопределить ключевые слова, которые будут содержаться в вашем регионе:
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