It would be helpful if the PipelineElement supported Sklearn's set_output API, which is specified and documented in the following links:
I suggest the following implementation as a possible start. It would allow the API to be implemented in a transform step wrapped by PipelineElement. While also allowing tasks that don't implement it to run.
def set_output(self, *, transform: None | str = None) -> BaseEstimator:
if hasattr(self.base_element, 'set_output'):
self.base_element.set_output(transform=transform)
return self