Vì sao and tại sao are both accepted answers. Does anyone know if there is a special usage for either term, or are they completely equivalent and interchangeable?
They are interchangeable. However, there is a small difference.
Tại anh đó = because of you... => You cause it. I assign the blame to you.
Vì trời mưa = because it rains... => That's the reason but I'm not blaming anyone - no one's fault.
To add to what LanguageButcher already answers, I would say "tại sao/tại vì" is more suitable with negative/unfavorable sense (why/because with doing something bad).
How come is only used in spoken however; it is verboten in written. But hopefully those kund of things are being taught in Duo's English course!
Mine wouldn't accept any of the answers. I put up a flag. Hopefully it gets fixed.