Yes, Except seems like the hardest of the join operators for the query engine. Wouldn't the two-way compare
SELECT * FROM
(
SELECT * FROM Staging.dbo.WIDGET
EXCEPT
SELECT * FROM Production.dbo.WIDGET
) LEFT_DIFFS
UNION
SELECT * FROM
(
SELECT * FROM Production.dbo.WIDGET
EXCEPT
SELECT * FROM Staging.dbo.WIDGET
) RIGHT_DIFFS
Work better as
SELECT * FROM
(
SELECT * FROM Staging.dbo.WIDGET
UNION ALL
SELECT * FROM Production.dbo.WIDGET
) BOTH_SETS
EXCEPT
SELECT * FROM
(
SELECT * FROM Production.dbo.WIDGET
INTERSECTION
SELECT * FROM Staging.dbo.WIDGET
) INTSCT