Shortnquick - that's a good post for why they are acceptable in college. I'm just not a fan of them in high school.
First - placing the label captain on a player implies they are above the rest of the team. They have a higher status because they really do or they wouldn't have the title. High school kids typically don't have the maturity to handle this role - they let it go to their head. Plus, if someone wasn't named a captain then they may resent the ones who were named. Incoming freshmen usually won't listen to them. We as coaches (and parents) talk about how this is a team and nobody is more important than the team so why create a group who is above the rest of the group. College is different because they setting is so much different - on their own, away from home, maturity should be better - that they can handle it. I just don't think HS kids can.
Second - typically (not always but quite a bit) the captains don't know how to be leaders. They turn into shouters and yellers - "you have to do better" "you have to work harder" while their errors and work ethic are now magnified by everyone else looking for that let up. Hard to get onto someone for making a mistake while you make mistakes yourself when you're supposed to be equal. When you want that starting position over a captain and they make a mistake just magnifies the criticism. This creates a cancer on the team.
Even if you try to take the captains and teach them how to be leaders and teach the rest of the team how to be good followers of the captains it still may not work. You never really know how they will react so why create the possibility of it going negatively.
Third - I've seen places who put seniors in as automatic leaders. What if they are a bunch of jerks? Now you're teaching the following classes how to be jerks and when it's their time they will want to be jerks because they want to treat others how they were treated. But once again why put a group above the rest? The most common answer is they are seniors and it's their last year - well if that's the case then make sure they always start and play. That's the message you're sending by making them captains / leaders but then a freshman / sophomore comes along who is better. Why would the rest of the team listen to that senior who can't win a position?
Fourth - you could let the team pick captains but as someone said earlier these tend to become a popularity contest or they go with the most talented. Well what if the most popular / talented kids are jerks? Yeah you as the coach can have veto power but think of the message you're sending now. The kids know how they voted and they know who should win the vote but the outcome isn't what they think it is. Now they know you the coach doesn't believe in Joe and Bobby as captains for whatever reason. Now the coach has created the division in the team and undercut whoever they put in place as captains.
If you let it play out then the right kids will do what they need to do and the rest will either eventually follow along or they won't but the chances of them becoming a cancer go down. The popular kids lose impact because they're not given that power to use wrong. It's extremely rare to find that kid who doesn't play who knows how to lead vocally. They are that rah rah guy on the bench but the guys on the field aren't going to listen to them. But if that guy on the bench is always doing the right thing and is a good team mate that will eventually carry more of an impact.
I don't understand coaches who put captains / seniors in charge of discipline. Something minor happens and they tell that group to handle it. Why? It's not their job - it's yours. Do your job and take care of players who get into trouble. This is how bullies on the team get created.
Now I will readily admit this may not be how it is for some people. They may have something in place that works to build / create leadership from captains / seniors that works. But what happens if you get that one group who happen to be jerks? Plus, winning tends to take care of most problems in these matters but what happens if you start struggling?
The best way (IMO) to let leaders develop or allow the seniors to "run" the team is to put something in place that is done pretty much the same way year after year - a program. When I was in Kentucky after I put in place what I wanted it took a group going through it as 8th graders before I started to see leaders. I didn't have to put that mantle on them nor did I have to tell them what to do - they just did it. The younger players went with it because they knew that's how it was done. There was no resistance. It was expected and it allowed us to really do some good things. I didn't have to handle conditioning - they just asked if it was sprints or baserunning situations. They took care of the field after games / practice without being told. The older guys would show the younger guys how to rake because I showed the older guys when they were younger. They were passing it on because that's what expected.
This doesn't guarantee it will always be rainbows or unicorns but it lets leaders become leaders without alienating them or creating resentment from rest of the team.