MySQL uses INDEX for optimizing ORDER BY with GROUP BY except when you add a JOIN
Query 1:  Since id is the PRIMARY KEY, it is unique.  Hence the GROUP BY id does nothing.  Remove it.  This may make it run faster.
Query 2 does not use any columns other than id from car_makes.  The only thing that the JOIN does is to verify that there is a row in car_makes for the make_id.  You probably don't need that check, so get rid of car_makesin that query.  That will simplify things.  Note that currently there is a &quot;filesort&quot;.  Withoutcar_makes`, that step will probably go away.
As for &quot;why can't it use the same index&quot; -- The STRAIGHT_JOIN forces it to look at the other table first.  This effectively turns the second table into
WHERE     make_id = ...
GROUP BY  id
ORDER BY  horsepower_peak DESC

To optimize such, it must first filter on make_id.