Through visits, your son will get a feel for fit. A few other things to think about. 1 D3 rules allow for 40 games, barring a post season, you’ll probably get around 35 in the NESCAC. 2. In the NESCAC, they split the league in two. So at Williams/Middlebury, you only play Amherst, Wesleyan and Hamilton. Bowdoin plays Colby, Bates, Trinity and Tufts.
Historically, athletically, I would rank the teams under consideration as Williams, Bowdoin, and Middlebury. Again, historically, the best in the league (without ranking) would be Williams, Tufts, Wesleyan and Amherst. Of course, the strength of teams change. At one time, Trinity may have been the strongest team.
A couple of years ago, Middlebury got a new baseball coach. I believe the team has been more competitive since then. Also FWIW, Middlebury’s team is pretty young.