Causing an assertion to be propogated from the class under test, even when caught by this attribute, results in the subsequent lines of the test not being executed and therefore not being counted as executed. Even when the exception is the last line in the TestMethod, the closing bracket counts as an unexecuted line. Coverage on tests is useful for ensuring that tests aren't conditional and that everthing intended is executeed (so it matters). What would be better is an assertion helper to execute the method that is expected to raise the exception. This is the approach documented here:
http://blog.typemock.com/2009/03/how-to-check-exception-message-using-ms.html
Very elegant and simple solution, and shoud be implemented as such as Assert.Throws() in the framework.