I think giving Spike a soul was a mistake for several reasons:
1. Spike's storyline became solely about Spuffy from Season 5 onwards, so much so that everything he did was about Buffy in some form. Therefore when he "chose" to get his soul, it was so that he would be more "acceptable "to Buffy. Before people start saying that Buffy didn't ask him to get his soul, no she didn't, however there's no denying that she considers it more acceptable to date Spike now that he isn't soulless eg the comics.
2. Considering the point of Angel being cursed with a soul to make him SUFFER for his wrongdoings as Angelus, I think it's wrong that Spike would inflict that upon himself just so that he would be more "acceptable" to Buffy. Spike was happy soulless so the fact that he feels he has to change that and that it gets played as this big romantic gesture doesn't sit right with me. Spike was happy in Season 2 being soulless, he was happy in Season 4 being soulless, yet as soon as Spuffy rears its ugly head, suddenly being soulless becomes an issue.
3. I think it diminished Angel's uniqueness and his predicament as a souled vampire. Basically Angel was THE vampire with a soul, not A vampire with a soul. What worked about Bangel was that out of all the vampires in the world, Buffy just so happened to find the one that had a soul, and despite a slayer and a vampire being mortal enemies, they were both unique amongst their kind. Also Angel's curse is based around the fact that he can never truly be happy otherwise he reverts to Angelus which is a punishment to both Angel and Angelus because of the cyclical nature of Angel's curse eg he's cursed and feels regret for his unsouled actions, he finds happiness and the curse breaks, he kills and does terrible things, he's cursed again and feels regret for his unsouled actions, etc.
If Angel can just go to a demon in Africa and get a soul without a curse attached, then not only does it make Angel look stupid for not considering that possibility (even if for whatever reason it turns out to be non-viable), but it also takes away the tragedy of Angel in that he is truly doomed to suffer for all eternity because he can't risk being happy.
4. Spike was better soulless and was a more lively character without a soul. In Season 2, people enjoyed his character for who he was, they weren't thinking "he'd be better with a soul". The fact that Spike's character didn't really change post-soul compared to Angel's complete 180, suggests the writers wanted to have their cake and eat it too. They wanted Spike to stay the same (so that the viewers continued to love him) but have him be "better" by giving him a soul. As a result it completely messes up the soul canon and takes away what made Spike great in the first place. Spuffy practically destroyed his character.