The keeper league I run we cut from 25/28 (up to 3 minor leaguers) to 10/13 right after the season to limit the amount of players in possession, limit the amount of cost calculation, and to open up a number of open draft slots (we pay keeper cost with draft picks). We then cut to final keepers in March/April (5/6 major league roster, up to 3 minor leaguers)
With the way our pricing is setup, if we kept everyone there would technically be no open draft picks to trade etc
Ideally id prefer to cut something like 5 players a month in the offseason, so you have waves of cuts but not everyone wants to stay that active throughout. So we cut a huge chunk in October then final decision in the spring.
Dynasty league I am in does a similar thing, no cost to keep but we hand out or limited amount of contract extensions right after WS so everyone knows who is owned, who can be traded, how amny draft picks everyone has to fill out their roster, etc. In that league to me it makes total sense to cut a player you arent extending as you should have no rights to use that player for trade if no longer legally "yours" (contract years update/run through the current season)
"I'm the man with the ball. I'm the man who can throw it faster than F***. So that's why I'm better than anyone in the world." - Kenny Powers