When exporting a node in hook_node_update, old data is being exported. Since the hook is executed before the static cache of node_load is cleared and node_export uses node_load without the reset parameter, old data is used.

Consider following code.

function hook_node_update($node) {
  $data = node_export($node);
  // ...

Code from node_save. The hook is called before the cache is cleared.

module_invoke_all('node_' . $op, $node);
module_invoke_all('entity_' . $op, $node, 'node');

// Update the node access table for this node. There's no need to delete
// existing records if the node is new.
$delete = $op == 'update';
node_access_acquire_grants($node, $delete);

// Clear internal properties.
// Clear the static loading cache.

Code from node_export. The node is loaded using node_load without the reset parameter.

$nodes = array();
  foreach ($nids as $nid) {
    $original_node = node_load($nid);

Possible solutions

Always request a fresh node by passing TRUE as the reset parameter for node_load.
Downside: performance when exporting a large number of nodes.
Introduce an optional reset parameter in node_export function that is passed to node_load.
Downside: more parameters.