The biggest difference is the Red Sox' perceptions of the two players from the get-go. Mookie was athletic but undersized, so wasn't drafted until the 5th round and the #172 pick. Roman had the size but still lasted until the 2nd round at pick #72.
Both rocketed through the Boston system, but when Betts had early success in the majors, the Sox chose to wait and see about trying to lock him up. In his first full season he earned 6 WAR at age 22.
It should be said right here that none of the Sox' current extended core have reached 6 WAR at any age... (though Crochet should, and maybe Ceddanne, if they stay healthy the rest of the season).
Boston loved a bargain with young Mookie, but at 23 he posted 9.8 WAR and finished 2nd for AL MVP -- and it was too late. His agent knew what he was worth, his mother knew what he worth, and he knew he should be paid like one of the top stars in the entire industry. Everyone did.
When the Sox offered Mookie $100 million, he knew he was worth $200 million. Later, when the Sox offered $200 million, he knew he was worth $300 million. Then he won MVP and the World Series, and led MLB with 10.7 WAR. When they finally offered him $300 mil, he was a better player than Bryce Harper, who signed with Philly for $330 mil.
Betts only just wanted market value, which was always at the top of the market when he was a Red Sox. They blew it, over and over again. They just made sure they wouldn't this time with Roman Anthony.