When all teams define "Done" in a manner that takes into account work completed by other teams, then you are ensuring functionality is complete.
If each team defines "done" differently and just expects the other teams to know about that definition, you'll run into several problems:
When an integration problem arises, no team will want to take charge of fixing it. After all, it was "done" when they started integrating things, so it must be something with the other team's work.
When you have more than a handful of teams, it becomes difficult to remember everyone's "definition of done" — especially when there are differences between teams.
The definition of done is not guaranteed to include that the integration work is functioning properly.
The accepted answer clearly states that things aren't done until the work from all teams is integrated and functioning properly. It must be releasable, and thus capable of being accepted by end users in its entirety.
Edit in response to comments: This doesn't mean every team has the same definition of done. It means part of every team's definition of done is the larger system and other integrating components are not broken.