I don't know any disadvantages either, however vertical stories can be implemented badly. 

When I first started my career I joined a team that was keen to do XP but they had no experience with it. We made a number of mistakes when using vertical user stories. 

One of the problems we encountered when doing horizontal work was that features did not integrate well across the layers. APIs often did not match the specification, features where missing and numerous other problems. Often because the developer of the had moved on to something else, you would either have to wait for them or do it yourself yourself.

Switching to doing Vertical Stories solved these problems and reduced/eliminated the waste of re-working to integrate. 

There are a number of XP practices that support this way of working. Anyone needs to be able to work on any area and everyone is expected to fix the bugs they find ([Collective Code ownership][1]).

When you are making the change to vertical stories, it can be tricky to work in areas that you're not familiar with. [Pair Programming][2] can help, if you aren't confident grab someone in the team who is pair with them. I've found pair programming to be the fastest way to get up to speed with a new code base.

Without strong owners over layers we found, that there was some duplication emerging. Although this was not a big problem, we needed to make sure that we practiced [Refactor Mercilessly][4] (with appropriate tests to support). 

Although I mention a number of problems, I don't think Vertical User Stories was the cause. In fact, it made the problems more apparent. After we made the switch, problems were no longer obfuscated across teams or application layers.

  [1]: http://c2.com/cgi/wiki?CollectiveCodeOwnership
  [2]: http://www.extremeprogramming.org/rules/pair.html
  [3]: http://martinfowler.com/bliki/PublishedInterface.html
  [4]: http://www.extremeprogramming.org/rules/refactor.html