Because ribbons are cute and its an accessory that isn't dangerous like necklace would be. I also think it allows them to incorporate their uniform colors more. Why those sports specifically? I guess because they tend to be more of a girlie sport so it's normal for the appearance to be important.
Just cause it's cute and it's a team thing. When I played volleyball in high school we all wore matching ribbons for each game, but we would wear the color of our opponents. It was kind of our thing to show the other team that we "owned" them hahaha
But now when I play volleyball as a hobby, I don't wear one. I only did in high school as a team thing. Just made us all look matching and cute. :)
Just an accessory. My school team, nor my club team, wears them. The only time I wore a ribbon (I play volleyball) was for our "pink" game (for Breast Cancer Awareness). The reason why is because being in volleyball (I don't know about cheerleading), you can't wear jewelry or even something like a hair tie around your wrist, so girls try to spice things up by wearing hair accessories that are allowed. Cheerleaders look more peppy if they wear a ribbon with their school colors. Honestly I prefer to just toss my hair up in a ponytail or braid it, but it's just a matter of personal preference and some girls just want to look cute while playing/cheering.
When I was a cheerleader in high school, we would wear ribbons in our ponytails that matched our school colors. I did the same thing on the volleyball team. Now that I am out of high school, I'm in a summer volleyball league, no one wears ribbons in there hair.