What is party engineering? That's when the players sit around and "fill in the gaps" so the adventuring party will be well balanced. You know - a little stealth, a little healing, a little magic/tech, a little brawn.
When a group uses this technique you end up with a well-balanced party that's able to tackle any challenge thrown at them. If you let everyone choose their own class independently you may end up two people from the same class. Unless it's possible for you to distinguish your character with game mechanics within the class, one party member will ultimately eclipse the other party member. "We've got to make a lore roll? I have the highest lore so I'll roll it!"
The down side to party engineering, however, is that the party becomes predictable. Experienced gamers know their roles well. The cleric is the walking band-aid while the fighter is the meat shield. The wizard lobs magic missile and then detects magic after the fight. Why not spice things up a bit by having an intentional hole or two? It takes a creative party to overcome the lack of a rogue or a cleric. It also lends the DM an excellent opportunity to introduce NPC characters that adventure with the party. No magic user? Hire one!
Another downside to party engineering is that somebody inevitably gets stuck with a role that they don't want. If you're launching a long-term campaign, nobody wants to be stuck as the healing potion with legs for twenty levels. Inevitably, there's a rush to declare what class you're going to be leaving the last person with whatever nobody else wants.
So ultimately, in this debate, I fall on the side of individual expression. So what if you end up with a party of all magic users? What a unique challenge! How can you make YOUR magic user unique even though you're in the same class and race as the rest of the party? That's a challenge an old-school gamer should relish.