I think the encoding is an intended feature, otherwise you couldn't transport things that are considered as a variable by SOAP. Without proper encoding your xml would be considered part of the XML structure that SOAP uses to implement itself.
If you want to manually edit part of the SOAP xml that goes out, you need to do
my $raw = SOAP::Data->type(xml => $xml);
...and pass that to the service method call. The xml needs to be correct and conforming to the SOAP specification, so beware.