The kids that were a close call, either-way, we'd have a detailed discussion about what factors were considered when making the decisions. We only didn't keep one or two kids that had made Varsity in a previous year; but with those, we definitely sat them down and had a real conversation and open dialogue. I don't think we ever blind-sided anyone with a cut that they weren't at least half-expecting.
I think it's a disservice to the program to keep a kid as a junior if he doesn't have a place as a senior. You should know your younger kids well enough to forecast who is on track to help you as they become available. We kept a few kids as seniors that didn't play a whole bunch, but we knew they were great in the locker room and would help us in practice and could play if we got in a pinch.
Some of the things I see happen with tryouts or program management baffle me.