I think this article explains really well: martinfowler.com/articles/mocksArentStubs.html
The article is long, but it has lots of interesting discussions. In particular these two: Design Style and Coupling Tests to Implementations which I felt first hand in the projects/companies I've worked for in the past
Anyway, the main point for me in the discussion about Stubs vs Mocks is:
there is a difference in how test results are verified: a distinction between state verification and behavior verification.
I fit in what Fowler calls the classical approach I find it easier to just care about the final state of test (and not how this state was derived). He sums it pretty well:
With mockist testing, writing the test makes you think about the implementation of the behavior - indeed mockist testers see this as an advantage.
Classicists, however, think that it's important to only think about what happens from the external interface and to leave all consideration of implementation until after you're done writing the test.
And in fact that is exactly what I do (think what happens from outside), it just happens to be natural for me to think that way.