Most teams extend their best players a year early and never allow them to play out their contracts.
When you let a guy play out his contract like they did by low-balling Dak and allowing him to bet on himself, the player is looking straight at free agency, and you have to pay him crazy money and throw in other incentives like no franchise tag or trade.
When you extend a new contract a year early, that player is seeing the big bucks in his imagination vs another season of pay on his old contract. Both the player and the agent want that fast money boost, so they are likely more open to compromise, along with being a year behind NFL inflation of salaries.
The Cowboys mishandled Dak from his rookie contract till now, and are still mucking it up, just like what happened to Kirk Cousins. You should never let a player you want to resign play on the franchise tag. 1, he will never want to play for less after seeing those checks; and 2, you are now truly up against the marketplace when negotiating a new contract. When you resign him early, yes, you lose that one year of a great deal, but you also have no competitors because no one else is even allowed to talk to him.