Note that you pay a fairly substantial performance penalty for deferring the check, which is why it isn't the default, even though the SQL spec says it ought to be.
Do you know what the worst case scenario is for the performance of deferring the check to the end of the statement (with deferred initially immediate)? Upon testing, I get a penalty of 2 to 5%, which seems pretty small, but I might not be testing the most adverse situation. See attached.
The main "cost" that prevents from using DII routinely is that they can't receive foreign key constraints.