According to the spec, a foreignObject can be defined inside a defs element and reuse through a use element. Unfortunately, it does not work.
You should see two green squares.
The left square represent the use case for foreignObject, the right square represent a reference use case made with a SVG Image.
‘polygon’, ‘polyline’, ‘rect’, ‘text’ and ‘use’.
So as far as I can tell, the spec says that a <foreignObject> is not a valid target for <use>.  Where do you see otherwise?
- First, it's possible to set a 'foreignObject' inside a 'defs' element (any valid child for a 'g' element is a valid child for a 'defs' element), which means that there must be a way to reuse it at some point. Naively, I was thought that the 'use' element could be the way.
"A ‘use’ element has the same visual effect as if the ‘use’ element were replaced by the following generated content [...] In the generated content, the ‘use’ will be replaced by ‘g’"
And because 'foreignObject' is a valid child for a 'g' element, I've assumed that 'foreignObject' could be a valid target.
The point is that I'm unable to find something in the spec that explicitly said how a 'foreignObject' inside a 'defs' element can be reused. Of course, because a 'foreignObject' can embed anything, it is not necessarily a graphic element. So the 'use' element is maybe not the better way to handle it. However, which is puzzling me the most is that it's possible to bypass this problem by surounding the 'foreignObject' element with a 'g' element which can be use as specified with a 'use' element.
At some point, it's very weird that any valid child of a 'g' element can not be a valid target for a use element. Maybe there is something to discuss in the W3C SVG Working Group here.
Boris in comment 2 is right as usual. Feel free to take this up with the w3c svg wg as it seems an arbitrary restriction.
Stuff in <defs> can be used for things other than <use>.  For example, it can be used for filters, masks, etc.  Those don't have the same restrictions as <use> does.
Please ignore my attachment - I attached it to the wrong bug.
Bug 593266 is _somewhat_ related to this closed bug.