I mentioned this a few days ago. It would have helped if you had raised this point then.
As it stands, it is simply a way to adding data members to an aggregate with an interface. In that sense it is not an addition to the interface since the Vtbl pointer remains exactly as before. The new information is not part of the interface as such. Putting it in the same 'struct' as the Vtbl is simply a way of enforcing the association. If you do not define a <iface>_IFACE_DATA macro, nothing happens.