It cuts both ways. I have used CTEs a LOT precisely because this behaviour lets me get better plans. Without that I'll be back to using the "offset 0" hack.
Is the "OFFSET 0" hack really so bad? We've been telling people to do that for years, so it's already something that we've effectively committed to.
How about adding the keywords FENCED and NOT FENCED to the SQL definition of CTE's - with FENCED being the default?