Quando imposti la proprietà Header con una stringa, lo style associato a MenuItem usa il ContentPresenter con RecognizeAccessKey a true. Questo significa che se incontra una stringa, lui applica automaticamente un template che fa uso di AccessText per rappresentare appunto un testo accessibile (in WPF infatti è l'oggetto da utilizzare per fare queste cose).
Questo processo non avviene se però usi un Binding perciò devi ricorrere manualmente a creare l'accessText che riconoscerà la stringa:
<MenuItem>
<MenuItem.Header>
<HeaderText Text="{Binding Source={StaticResource LanguagesList},
XPath=String[@id\=\'2\']}" />
</MenuItem.Header>