Not bad advice but perhaps premature. The OP has not shared exactly how the XML is parsed to an IS doc var. The usual thing to do as you note is to set the right inputs to xmlNodeToDocument so that the structure is as expected right away.
If the OP indicates, which seems unlikely, that there is no control possible to get the string list “right” in the first place, then the Java code would be a way to go (could do it with FLOW too).
The “solves the issue right now” is true but IMO is short-sighted. As you note, this is not the regular way to do it. As such, the action now is to determine if the regular way can be used, IMO.
Regarding the makeArrays – yes, that is a weak way to do so. For simple docs is fine. I think I’ve used that maybe once in the past many years. The 2 primary ways I use xmlNodeToDocument is with no inputs other than the node (for simple docs where we know there will be no ambiguity for single elements) or with makeArrays set to false and documentTypeName specified.
Making structural changes after the doc is instantiated is not a terrible approach but it’s a last resort sort type of thing.
Not at all! The exchanges are great!
We might disagree on this one being a good one for evaluating trade-offs though — IMO, the use of a documentTypeName is the way to address this. And if the OP shares the details of what the top-level service is doing we can figure out what adjustment needs to be made to properly parse the XML without any “add-ons”. 
#B2B-Integration#webMethods-io-B2B#webMethods-io-Integration#webMethods-cloud#Integration-Server-and-ESB#webMethods