For a reason I can't explain, by writing to a file and returning this file to the output fixed the problem of encoding.
I decided to keep this question in case other people had a similar problem.
Here's the snippet :
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
File file = new File("Path/to/file.xml");
transformer.transform(new DOMSource(doc), new StreamResult(file));
response().setHeader("Content-Disposition", "attachment;filename=" + file.getName());
response().setHeader("Content-Type", "text/xml; charset=ISO-8859-1");
return ok(file).as("text/xml");