Here at PreviewLabs, a company specialized in game prototyping, we're using Unity3D as an all-round tool for game prototyping.
We like having full control over the prototyping process, and the best way to do this is to write the entire prototype from scratch, while limiting the scope and focusing on what matters. This gives you the freedom to make any kind of change to your game's concept, without being limited by existing systems or code you didn't write.
If you're using a genre-specific game development tool (such as a specialized game engine, or a map editor of an existing game), you need to know whether any innovations you may want to add can be implemented easily using this tool - and that's not easy, as you don't necessarily know up-front what you'll want to change after playing your prototype for the first time.
One example of a tower defense game we prototyped was for the game Siege Breaker (a free-to-play game on iPhone and iPad). For this one we also used Unity3D, in combination with some pre-existing C# pathfinding code. Since Unity 3.5, they also have a built-in pathfinding solution, so you may want to have a look at that too.
There's also an article comparing the prototype and the final game for Siege Breaker on our blog: http://www.previewlabs.com/siegebreaker-game-vs-prototype/