Is it better to let contract expire and then resing it next season? Yes.
One year of contract lasts from 1. to 28. (last) day of season. So when you sign contract at the end of season, for example today (26/28 day), that means that contract will be 3 years long for only 2 days and 2 years right after start of season new season. Let players contract expire, then sign again on 1st day of next season and new contract will last 3 years.
After contract expires, you will have 7 days to sign new contract before he leaves club.