LPE's already don't need to think about transforms. There is only one LPE that does something that is abnormal (curve stitch), the rest just calls the default, apparently it was copied a number of times in the source. (I'll clean it up when I'm home).

I figured adding an LPE at the end of the stack would be the same as just writing to the transform attribute of a path. Turns out this is the case, and actually bugs for subpath stitching! (set preference to optimized, scale a path with a curved stitch applied, then check with scaling when preference is set to preserved. the results are different)

What if you add one lpe, transform, add a second lpe, and transform again? I think the first transform still affects the output, while the transform attribute cannot keep track of both...

I don't think you solved a non existing problem :-). We realy have to keep track of all the transforms...

As for the "private-effect", I think it's better to keep object-specific data in the object itself than in the defs: for instance, either we'll have incredibly long and ugly defs, or when deleting an object we'll have to clean them of the eventual object specific entry, which is not very natural. What about an "inkscape-lpe-local-data = #lpe1234,blah...,#lpe5678,blah...."?
jfb.