Hi,
As you pointed out, mirrored or transformed surfaces are a problem, usually because inverted normals.
I tried to replicate an internal process similar to 'Reset XForm', but until now i could not get an acceptable result.
I guess that embedded surfaces is an overkill workaround, just to solve this issue.
Not only because the difficulty to implement it, but also would cause problems when applied to huge surfaces.
Instead, embedded geometry for leaves is more controllable (we assume anyone is going to create leaves with 1 mill. faces), and also it's very handy to store items in the library.
A solution would be to include a 'Proxy Cache' feature, similar to RailClone.
In this way, you would Reset XForm the surfaces, generate the Ivy, store result internally, and then revert surfaces to their original state, or even delete them.
In fact, this feature is already in our roadmap because it solves other issues. But i doubt we can include it for the initial release.
If you cannot modify the surface objects, by now the only workaround may be to create a copy of the surface objects (just for ForestIvy), apply XForm, and keep these objects hidden in the scene.