Think of it this way:
- Unit tests validate implementation
- SystemIntegration tests validate design
- Behaviors (BDD) validate specifications
You can have your one unit tested to 100% coverage documenting at least one reason for every line and branch you have in that unit. Then you combine that unit with something else that had different expectations for how your unit behaves. Behold an error in the design.