The current convention is that .call on component with d3-support receives a d3 selection of the container <g> element. This causes some flexibility issue where component must use a <g> element as parent.
If .call are to receive an empty selection, the component will have control over what type of element it want as parent. This makes putting things in <defs> much easier.
The downside is that this may break a lot of existing code. 😦