This isn't a new explanation, it's what they said originally, and what I speculated happened back when this first broke out in the virginia blogs.
Allen's staff had a name they called him, Allen probably didn't know it's derivation or its use, but he had heard it.
Then when he addressed the kid (watch the video and this is clear) he called him out as the "yellow-shirt guy". but that seemed to make Allen uncomfortable refering to the guy by the shirt he wore, so he threw in the guy's name, or at least what he remembered hearing as the guy's name. Certainly "macaca" doesn't sound any worse for an indian-american name to a non-indian than dozens of other names that ARE indian-american names, so he could be excused for not knowing it wasn't the guy's name.
When he learned it wasn't the kid's name, he apologized.
The webb supporters claim the "story" allen gave was that he meant to say mohawk and just messed up, but Allen never said that, and neither did Allen's campaign.
The guy's hair looked like a crappy mohawk. When Chad put up the picture, it all became clear, although the webb supporters are still insisting that what is clearly a mohawk in the picture is NOT a mohawk, but instead a "mullet", which in southwest virginia is something completely different, showing that Webb's campaign still doesn't understand the real america, or the real virginia.