I think a lot may have to do with your son's personality. My son hated to lose at anything, he hated for his t ball team to lose, he hated to lose at board games, if his favorite pro sports team lost we knew to give him some space. I saw a video of his college baseball team competing against the lacrosse and hockey team in a fitness test, he wasn't going to let his team lose an event.
This winning desire factored in to his decision on where to attend school and play baseball. He didn't want to play for a loser, he wanted to play for a team that was in the championship mix at the end of the season. He knew it might cost him some playing time early but he had the confidence and work ethic to know that eventually he was going to be a difference maker at his school. My son passed on a couple of offers that would have put him on the field as a freshman to go to a school that posted yearly winning records.
two years ago a player transferred to his team from a d1, led the old team in innings , at bats, BA, but was tired of losing. Being part of a winning team takes a team first commitment. It takes a desire to put in the extra work to excel. It takes players pushing each other for playing time. Being a part of that is oh so special and something to not overlook.
Your program B has been a regular bottom dweller, its tough to turn that around. If they were just a couple of players away from competing with the conference best, maybe I would push my son that way. But to go from the basement to the attic in 4 years is pretty tough. If the new coach does turn it around its likely going to take a few more years. Your son could leave with the satisfaction of being the first .500 team in 20 years? Would that be good enough to satisfy him?
Best of luck.