Optimizer removes order by when it's sub-part of group by (test_if_subpart) too early, before it decides how to execute group by. Order by can only be removed if group by naturally delivers sorted results. it's not the case, for example, if group by is pushed down to the engine.
Here is the example query that triggers the bug:
select a,b,sum(c) from opportunities group by a,b order by a desc;