The linguist in me wants to dwell for a moment on why Angel lost his Irish accent over time, while Spike never lost his English one.
First, let's get the obvious answer out of the way: David Boreanaz's Irish accent is reeeally shaky, whereas James Marsters' accent kicks ass. But let's pretend that's not the actual reason...
When adults lose their native accents and acquire another, it's often a semi-conscious effort, based in the desire to blend into a new group and leave behind their old one. Angel, upon regaining his soul, clearly wants to escape his past as Angelus, in which he still used his native Irish brogue. He moved to America decades before the show's beginning (if I understand correctly), so blending in as an American would have been the obvious choice. In contrast, Spike seems to have roamed the world more freely before showing up in Sunnydale, and anyway doesn't care about blending in; in fact, to judge from his fashion sense, he wants to stand out. He proudly uses Brit slang even among the American kids who aren't as likely to understand it.
I think the explanation lies mostly in their personality differences rather than amount of time spent in America. Namely, Angel is drastically different from Angelus, while souled Spike (or chipped Spike) is really not that different from evil Spike.
And that's something I wished Buffy (the character) had acknowledged a little more. I mean, jeez, Angelus has pretty much zilch going for him in the "good" column, but Spike all along, despite the tough talk and exterior, is the true softie, the "fool for love." Even in his first episode, he's partially defined by his tenderness toward Dru ("You two reek of humanity," a Big Baddie tells them disparagingly later on), and is troubled and seemingly conflicted by his discovery that Buffy is "a Slayer with friends and family." Angelus's reaction to Buffy's friends and family? More like, "Whee! More people to psychologically torture and kill!" Buffy would have done well to remember that it was Spike, still unchipped, who helped her save the world against Angelus.
So, really, it's no wonder Angel wants to distance himself from his other persona: that guy is a scary dude. But the distance between bad Spike and good Spike is short enough that ol' William can stretch across it and still be, more or less, himself. In all his cheekiness. Thus, while Spike turns more and more to the good side, he doesn't start sounding any less English.
But note: when Angel reverts to Angelus in the present day, he doesn't revert to Irish. Why not? Guess we're back to "Angel spent a lot of time in America" and "Boreanaz really didn't want to do the accent."
Enough about linguistics. The real question is: why, in God's name, did Angel's hair have to be so bad in the 1800s? William the Bloody gets a cute floppy wavy 'do, and Angelus gets Frankenstein Hair? Could nothing have been done about that, I ask you?