The Zeppo could have been the start of Xander finally growing up and taking a more serious role in the group but instead they keep him as awkward joke guy. Seeing him in season eight as as commander at Slayer HQ was awesome; except for the fact that they skipped all the development that would have led him there.
I agree with you that Xander's character could have been developed well, and I think that it was a wasted opportunity by the writers of Buffy. I do not, however agree that he was never a hero.
In The Harvest, when Xander has to kill his best friend because he's become a vampire. There's nothing that gives someone heroic status like having to sacrifice a loved one for the good of others (Gunn, anyone?)
In Innocence, Xander uses his knowledge to come up with a plan that in the end kills The Judge, one of the most feared demons throughout history. It's too bad they had Buffy using the rocket launcher, I thought it would have been better if Xander did that while Buffy fought Angelus.
As you mentioned, the Zeppo. In the beginning of the episode, it is made clear that Xander has no innate fighting ability (and he is told to stay "Fray adjacent," lol). Still, throughout that episode, his bravery shines through. He doesn't care that he doesn't have world-saving talent, he's gonna save the world anyway. And he's not going to kiss and tell, because he has a hero's sense of honour.
Also, as much of an ***hole as he was to Cordy in Season 3, buying her that prom dress was a pretty hero-like way to apologize.
Unfortunately, the writers got lazy as the show went on. His courage does resurface in Grave, but after what he did to Anya in the same season, he still feels weak. It's too bad - he was my favorite character up to season 3. He's pretty much the only reason season 1 was tolerable for me.