Не уверен, какими соображениями руководствовались организаторы олимпиад (возможно, это банально тянется со времён, когда оборудованных компьютерами рабочих мест было мало), но вообще программирование – в принципе коллективное занятие, за редкими специфическими исключениями.
Разработка программ, как и другая инженерная деятельность, связана с большим количеством условий и деталей, которые невозможно прослеживать в одиночку, и поэтому налаженное взаимодействие в коллективе разработчиков в целом важнее глубины индивидуального погружения в вопрос. Не зря в профессиональном программировании постоянно придумываются и обсуждаются новые методики коллективной работы. Владение теми или иными методиками коллективной разработки является одним из самых частых требований к соискателям на должность разработчика в программистских фирмах.
В вузе при обучении профессиональных программистов задания тоже часто выполняются коллективно. Некоторые курсовые работы (например, написание компилятора) могут находиться на таком уровне сложности, что их крайне затруднительно было бы выполнить в одиночку.