I guess this is because the phrase adgroup sees that exact adgroup and wants to avoid double serving.
It does not work that way. Simply think that "the system" figures which ad to show on each query that matches your keywords, being that exact, phrase, or broad match.
Ideally, if you have a same keyword in exact and phrase match, exact should pick it up, whenever it's searched for. And that's how it works in most cases.
Here, your max bid plays a big role. I.e., if you bid $4 on phrase, and $2 or $1 on exact, it may happen that phrase wins the internal auction (on account level, before it goes out to compete with winners from other accounts).
In short, even if all of your phrases are totally covered by their twin brothers in exact form, they should still trigger impressions whenever they match the query that does not match the exact match.
For example, between [word word] and "word word", on a query "word word word", which do you think is the only choice for "the system".
Should I add -[big widget cheeseburger] to Adgroup2?
Yes you should, if you want to prevent your phrase match to trigger ads on exact match of your keywords. That way, you ensure your exact match is active when it should be.
Impressions:
1. Per your post, it looks like you see no impressions at all in your "phrase" group.
2. Or... you're checking the phrase keywords, and the system is telling you how you already have keywords in other places that trigger your ads?
Is it first or second?