Darren, I'd be careful about throwing crap at frameworks other than the one you prefer yourself. There's something about that type of posts that removes the legitimacy of whatever else you have to say - Roy Osherove, for example, lost al lot of followers when he started to badmouth competing IoC containers over the one his x-employers were developing. He is now freezing his stones off with -17C here in Norway :-)
The only reason for changing one test framework over another is because the one you currently use is limiting your options in some way, or because another test framework offers you a chance to save a serious amount of time.
In our latest project, we're nearing 3000 unit tests written with MSTest. We follow the SOLID principles for all our work, and we used TestDriven.Net to run MsTest without instrumentation, which made it more than fast enough for our needs (currently a handful of seconds to run 3000 unit tests. You have time to blink, but that's about it :)
For all our testing needs, we've never had use for anything but exception assertions on some tests, as well as setting up a few static "before first" initialisers (ClassInitialize) when doing IO integration tests. There are more advanced uses in all of these frameworks, however, if you're working SOLID, keeping your code DRY and overall keep a sound relation to the code you're writing, Unit tests nver get to get more complex than a simple setup and even simpler assertion.
nUnit used to be our preference due to its lack of instrumentation. What slowed Mstest down back in VS2008 and later VS2010, was its instrumentaition feature, keeping a record of all data about every single testrun on a new folder.. That was easilly solved by using TestDriven.Net, which ran MsTest without all the instrumentation, but with VS2012, MsTest is fully on par, as you have to opt in with all those things now, MsTest execution is fast again, thus, the argument to use it falls under "MsTest aint broken anymore, no reason to fix it"
In my line of work, I often come across the need to introduce TDD to developers. Doing so with MsTest goes a long way in assuring the devs about two things:
1) They do not need to install anything in order to start working with TDD
2) If Microsoft has a framework for it, then we can call to get support on it when we're stuck
Of course, nobody ever calls Microsoft for support with MsTest, but the fact that you CAN is often an icebreaker for introducing new methodologies.
As far as the integration with SpecFlow:
MsTest is supported by SpecFlow .It is also advertised as a supported framework for SpecFlow. Anything that is NOT working against SpecFlow+MsTest that works with nUnit can therefore be tagged as a bug. There is no conceptual difference in those two frameworks, nor should there be.