The easiest option is to derive TDevice from TInterfaced Object and just extend your descendants with the additional methods. Beware of interface reference counting, though, otherwise you will end up with lots of unexpected access violations.
Alternatively you can write a wrapper object that descends from TInterfacedObject and delegates the implementation of the interfaces to TDevice descendants. In that case reference counting will be less of a problem.
TMacAddressWrapper = class(TInterfacedObject, IMacAddress)
private
FDevice: TDevice;
property Device: TDevice read FDevice implements IMacAddress;
public
constructor Create(_Device: TDevice);
end;
constructor TMacAddressWrapper.Create(_Device: TDevice);
begin
inherited Create;
FDevice := _Device;
end;