Na verdade, o que você quer fazer é o seguinte:
function YOURTHEME_preprocess_page(&$variables) {
// This disables message-printing on ALL page displays
$variables['show_messages'] = FALSE;
}
function YOURTHEME_preprocess_node(&$variables) {
$variables['messages'] = theme('status_messages');
}
Como isso funciona: O núcleo do Drupal verifica o valor de show_messages em theme_process_page. Se for VERDADEIRO (padrão), ele chamará theme ('status_messages') como acima, e esvaziará efetivamente o armazenamento de mensagens; portanto, chamar a mesma função de tema mais tarde retornará uma string vazia. No entanto, se definirmos essa variável como FALSE, isso impedirá que a referida função tema seja chamada na process_page, permitindo obter todas as mensagens usando a mesma função tema, em um modelo de nossa escolha.
template_preprocess_node
então drupal_get_messages está vazio quando você o chama.