Stylesheets aren't the only thing I've seen outside of root. To be honest, the way that rogue90 showed is the most intuitive manner to me. If XML::Twig could detect that the request is before the root AND the request is for a comment or a processing instruction, then just call the _add_cpi_outside_of_root function. Or if the request is after the root AND the request is for a PI, then do the same. (Comments after root allowed? I'm not sure.)
Having an add_stylesheet method would then merely be a convenience method to wrap all that up. But it wouldn't limit the user to just one type of PI outside of root.
Note that the way I've done this type of thing in the past is to read the XML file, add <root>...</root> tags around it, do my massaging, and then return $twig->root()->sprint($t->root(), 1) to get rid of the actual root tags. That can be ugly, too ;-)