I always use @isTest at the class level for the reasons stated in @ca_peterson's answer.
For individual test methods, I prefer @isTest, on the line above the method declaration, like so:
@isTest
static void TestSomething() { ... }
//instead of this:
static void testMethod TestSomething() { ... }
Why? If I need to disable a test, I can just comment out the @isTest line like so:
//@isTest
static void TestSomething() { ... }
And suddenly, the method isn't a test method anymore, it's just a "helper", and won't run as part of the test suite. This is handy if you're trying to isolate a problem in a particular test and want to temporarily disable a slow test, or tests that generate lots of log output. If needed, a quick seach/replace changes all test methods to non-test methods, and I can uncomment just the test I'm working on.