Good question. I would use qie.writeFile() like this:
var destinationPath = "C:" + File.separator + "Some" + File.separator + "Location";
var fileName = "file_name";
qie.writeFile(destinationPath + File.separator + fileName + '.xml', message1.getNode('/'), false);
qie.writeFile(destinationPath + File.separator + fileName + '.csv', message2.getNode('/'), false);
The Code Wizard has a description of the qie.writeFile() function. This approach will overwrite the existing file at that path. (You could do some name conflict resolution if you needed to.)
Alternatively, yes. You could route to multiple mapping nodes, and set the message object for both, and then route to separate destination nodes. One advantage of using a destination node is it will handle resolving naming conflicts for you.