If you've got a few guys and you don't know what they can do, then you have them compete for the job.
If you have a young guy that you want to develop, then you have to think more strategically. Will it be better for that player to sit on the bench and watch until he's ready, or will he learn better by going out there and actually playing? How bad is it going to be for your record to get him that time?
And realize that if you're having a competition, then those players are sharing reps with the starters. That means that whoever wins that competition and gets the nod to start won't be as good or prepared or have as good chemistry with the other players as they would have been if you gave them the starting position up front. For some positions, that doesn't matter as much but for the QB, it can be critical.
Now, with that said, that's my viewpoint on it. I don't know how many coaches in the NFL agree or disagree with that.