To "be to blame" for something is just an expression. I doubt anyone can give you the reason why "blame" has to be used this way. And it really doesn't matter. While it can be interesting in finding the historic reason for something existing in a language, if it's possible to even find one, it really doesn't advance language learning much (other than helping you remember the use of the word, if you have the time). Languages are all weird in that respect. You just have to accept the way things are said and move on. Sorry. It's not much of an answer, but it's the best I can do as a native English speaker and one who's studied other languages as well. And you are right. To "blame" does carry negative connotations. You can't say, for example, "Who's to blame for giving me this great Christmas gift?" But, you would say, "Who's to blame for starting this fire." Sounds like you've got a good grip on English, so I sure wouldn't worry about it.