This is a great question, and one of which I'm not sure I fully understand the nuances. But here goes:
What I learned in my first Japanese class was the
は／が for basic things like this:
- あの人は日本語がわかる → That guy understands Japanese.
- 友達は子供が３人います → My friend has 3 children.
- だれがこれが出来るか → Who can do this?
Then I heard some people start using
に and I was like WTH? But after hearing
に for a while, it seems to translate like "unto 〜" or "by 〜". It's not how we'd (at least most people, I'd imagine) naturally say it in English, so it seems a little strange.
- あの人に日本語がわかる → "Japanese is understood by that guy," or "Japanese is understandable unto him."
- 友達に子供が３人います → "3 children exist unto my friend," or "My friend has 3 children (unto himself)."
- だれにこれが出来るか？ → For/To whom is it possible?
My understanding is that with the
は／が the emphasis is more on the person/subject, whereas with the
に version, itseems to be more on the "other part" (Japanese being understood, 3 children, the thing able to be done) for lack of a better term.