If Porcello ends up pitching well, it won't end up being an overpay.
While I understand the idea of waiting to see how he does this year, if he does end up pitching very well, we are likely talking a 6 year contract instead of 4. Five years at the least. The Sox do not like giving out those longer term deals, especially for the advanced ages. And if Porcello walked, the Sox would have to find another SP to replace him.
They are taking a risk in signing him this early, but IMO, it's a good risk to take.