Generally speaking, you are "good / bad at" an activity. Thus:
1. ??He is good at cars
— intelligible, but strange: cars are not an activity. But "stealing cars" is; thus:
2. He is good at stealing cars.
"French" on the other hand can be understood as "French lessons" or "the study of French" (you "do French" at school); thus:
3. He is good at French
Or you can add a gerund:
4. He isn't very good at speaking French