Obviously a more logical comparison would be "what I am good at (or for) and not good at (or for). But this is speech, which is not always pre-planned to the final preposition.
I'd find "at" better, but there's nothing wrong with "De Niro is good for playing tough criminals." He's good for it because he's good at it.
Whether you can say "I am not good for something" depends on your meaning though. You can't say "I'm not good for maths" if you mean "at maths". If you have a bad back, you can say to a potential employer "I'm not good for heavy lifting".
Student or Learner