There is a clear assumption since 4E, and even in 3E before that, that PCs should have 8+ in all scores, and 10+ in about 5 scores; and everyone should have a 16+ in his main stat - even 16 is seen as weak. In 5E, 18 is average, 20 is just good and it is what any player will be getting for his PC by the time he has access to stat bumps. Having everyone stand on high ground means everyone is on equal footing. The high ground then means nothing. I'm hoping to find a way around this. Going back to 3d6 appears to achieve the variability and uniqueness of very good (and very bad) scores that I hope to have in a group of characters.
I know what you mean! It could be worth noting that 5e moves a lot of extraneous modifiers (like the skill ranks of 3.5) into essentially stat + proficiency. So my sense is that a 20 in 5e is mechanically comparable with an 18 in 3.5e.
However, playing a wizard with 7 INT makes little sense. I do not wish to force players to choose their class after their rolled up their characters. So I still hope that the character's main stat will have at least a 12 and hopefully a 14. And that the character might also be able to boost a secondary stat to 12 or even a 14 - albeit not necessarily the one that he would naturally be inclined towards. Apart from that, I'm happy with the variability.
Given we want to avoid letting the dice roll dictate the character class, we must allow players to reorder or boost some of their rolls. We're aware of a lot of different options. Points buy. Pre-gen arrays. Additional 3d6 rolls. Bonus dice. Etc. I want to suggest something different.
1. Your players generate six rolls of 3d6 each and put those into a group pool sorted highest to lowest.
2. They each choose their character class.
3. They then take turns to take rolls out of the pool. They must always take the highest roll available to them.
4. Their first two picks must be assigned to their class attributes. Other picks are assigned randomly to their remaining attributes.
5. After everyone's first pick, order reverses and then stays reversed for the remaining picks. This means the last picker in round one picks first in round two and each subsequent round. The second-to-last picker in round one picks second in round two and each subsequent round. Etc.
But how does one deal with late joiners, or replacement characters? I think what this system amounts to is that the DM has a pool of pre-generated arrays that have distributed good and bad rolls fairly. If that doesn't work for you I might suggest instead simply
1. Roll 3d6 for attributes, allocated to attributes in order rolled.
2. If the sum attribute bonus is <+1 discard array and start over.
3. Choose class.
4. You may swap the roll on one class attribute for that on another (non-class) attribute.