I've experienced a situation of a test team being assigned to write unit tests, and their coding knowledge is often not so great. The tests (with the likes of nunit) miss a lot of things that a developer knows to check for. They also aren't concentrating on the architecture, just the higher level spec, but unit tests are individually wrapped around internal structures that the testers may not know or care about. When it comes to TDD they'd only be able to write the high level test for a module, not a unit test for a class they haven't thought of and thus under TDD that class would not get written (for example).
That's not to say that non-coding testers shouldn't write tests also, just not the low level unit tests. Another developer could write them though.
This is where BDD comes in. TDD focuses the developer on the architecture and implements a series of regression tests. BDD focuses everyone on the requirements.