The Cloudformatter plugin is scraping the DOM and assembling it into structured content to send to the server. It does a few manipulations, mostly to make sure that the content is structured as XML.
I think you are asking why in that structure, you have an SVG somewhere with an ID of #whatever, it is not used inside another SVG in that structure who "uses" that structure named #whatever.
The answer is, it doesn't because it shouldn't. SVG use is for reusing content inside an SVG in multiple locations inside that SVG. You are trying to reuse an SVG from the DOM into another location inside an SVG inside that DOM.
If that works for browsers, well good for them. But that is not what the standard is. SVG use in the standard is clear that it is for reuse of content within that same SVG.
Personally I am lost as to why it works in the first place. Like you have five dynamic charts on the same page and that code creates #gradient1, #gradient2 in each chart and they are all different. Which #gradient1 should my chart use? The one inside? Or the one in the other chart? Or the first chart?
Take a simple case where I have 2 charts on the same page.
They are dynamically created from Javascript so they internally do things that alone, inside itself, understand the nature and structure of the SVG itself. They can create a set of IDs internally that apply internally, but of course they have no idea of what exists on the page.
Chart 1 has this inside:
<rect id=”rect1” x="0" y="0" width="720" height="400" strokewidth="0" fill="#FFFFFF" class=" highcharts-background"/>
Chart 2 has this inside:
<rect id=”rect1” x="0" y="0" width="220" height="200" strokewidth="0" fill="#FFFFFF" class=" highcharts-background"/>
Now, internally that id “rect1” is referenced inside the first SVG and it is also in the second SVG. But note that they are different sizes.
Now, this works because they are internal to each SVG and they are different. Ask yourself this:
Why does chart 1 not reference the second one when it is drawn?
Why does chart 2 not reference the first one when it is drawn?
Now as you have done, you create a third SVG and use “rect1” in it – which "rect1" will it use? Afterall, there are now two of them.
You certainly could attempt to modify the Javascript to try and resolve use like this BUT it would be a totally one off solution for the reasons above. In the third example – you would not know which one to copy into your SVG.