I be inclined to agree but I only advocate "an exceptionally detailed spec" in the case of outsourcing. This is due to a combination of two things:
1. The lower levels of communication between the client and development house and 2. The literal level that outsource companies will take the client at.
Having worked on projects that came bundled with excessively detailed specs, I would agree that said defining detail is a fools errand since it often gets changed further down the line.
However, I don't agree with your assertion that "if the project fails/runs over budget/is late then it's due to a failing on the project management side". For example, what if the dev. company simply aren't as talented/responsive as the client was first led to believe?