This just shows you don't know shit about hispanic culture.
gringo is not automatically offensive, just as the word "jew" isn't. If Joe is Jewish, you can say "Joe is a Jew" and that is acceptable. You can say "Joe, that fucking Jew," and that changes the meaning.
The same does with gringo. It just means someone who is a non-native spanish speaker. Americans are hypersensitive and childishly fearful of some sort of SPANISH INVASION!@# (see LordNod's post, for example), so they've labeled the term as pejorative/offensive, but in the hispanic culture it spawned from, it wasn't (and for the most part still isn't) used it as a derogatory phrase. It's simply an adjective.
Since americans have started to become offended by it, it CAN be used negatively, but it's like the example of "Jew" I used above. It's context, not the word itself. And of course if someone is hispanic and has a predisposition against white people, they're going to play off that person's feeling of indignation and use it pejoratively.