It seems needlessly punishing the player though. If you allow rolling scores, I think you should anticipate PCs will start with 20s on occassion. Then when they get to take a feat, they gain only "half" the benefit of the feat because they are denied the ASI...
Had the player rolled a 17 instead of an 18, then they would gain the benefit of going from 19 to 20. So, you're penalizing them for rolling well???
That is why I suggested their lowest ability gets the +1. They still gain some benefit, but don't get to choose where it goes. In my opinion, a "free floating" +1 is way more useful, so I would never go with that route personally.
I don't really see it as punishing the player, especially since he is 3 points above average already. He doesn't have to choose a Charisma boosting feat.
If they rolled a 17 instead of an 18 they would have been worse off from level 1 to 3 and still been the same from level 4 to 20.