To be good or bad at something, in my opinion, is far more natural than in something.
However, to be good at something connotes a good ability to learn as opposed to an accomplishment.
So for example, you might be good at English as a beginning student, even though your English was at that point still relatively poor. But if somebody says "Your English is good", that indicates an accomplishment rather than an ability to learn.
- For Teachers