Personally, I'd probably just use a multi-step process...
create table tmp as (
select * from @A
EXCEPT
select * from @B
);
delete from @A;
insert into @A
select * from tmp;
Anything else I can think of seems to require an explicit list of column names.
delete
from @A a
where exists (select *
from @B b
where a.Fld1 = b.Fld1
and a.Fld2 = b.Fld2
<...>
);
Also considered a quantified predicate and the IN predicate...something like
delete
from @A a
where (a.*) in (select * from @B);
delete
from @A a
where (a.*) <> ALL (select * from @B);
But I don't believe (a.*) is considered a row-value-expression and regardless the documentation for both say that
SELECT * is not allowed in the outermost select lists of the fullselect
Lastly, note that all of these are going to have problems if there are any NULL columns.