I think there are a couple reasons that kids don't spend 4 years at their school....and I'll base some of this on my son's experience. He had 7 guys his freshman year...4 of them finished their 4 years there.
1) you really need to make sure you "fit". When my son was being recruited, I went to watch a couple games in this league...and thought he was a good fit. Could he have played at a higher level? Maybe, but he had a great 4 years so I guess it worked out
2) Just because you were good in HS guarantees you NOTHING!!! He had 2 kids out of his freshman class who were already unhappy by the third week of their freshman fall. Both had plenty of opportunities....and just didn't perform. By Spring, both of them (and their dad's) were just fuming about their lack of playing time....though again, a look at their batting averages/K's/etc showed the coaches were making the right call. Both kids eventually left for lower level schools...and ended up having good careers
3) If you want to play....you need to work!!! When you show up, you were a HS stud, but guess what, now you're competing against guys 3 or even 4 years older than you. Every kid that is there...and the ones coming in behind you were HS stud's.....you will get passed by real quick if you don't work!
4) What are your expectation? If you walk in thinking I'm going to be the Friday starter....or starting SS by the Spring of your freshman year....you are in for a rude awakening....for reasons mentioned above. A lot of kids have never sat on the bench....and when they do, they can't take it. I get it, and that's why there is the option to leave. My son went from starting pitcher his freshman year, to reliever his sophomore year to closer/part time DH his junior year, to everyday DH/1B his senior year. He didn't care where he played....he just wanted to play. He probably could have gone to a D2 or D3 and played everyday for 4 years....and been on a team that would have won a lot more games....but he stuck with his committment and made it work
Again there are 100's or reasons kids leave....playing time, coaching issues, school issues, grades, etc, etc, etc. There is no one answer as to why kids leave....or if they should/shouldn't stay. Just way too many variables