Not all tests are created equal.
Many cannot be tested behaviorally because the system under test is not interacting with collaborators and only outcome verification makes sense.
Others cannot be tested by outcome because the system under test does not return a result or have side effects.
For example, if you need to verify that the system under test sent a message to an external system, you can only represent that external system as a mock and the aspect that you want to verify is that your system under test called out to the external system.
I am going to amend that statement to say that you are probably less interested in the fact of having called the external API than you are in what was sent. You still use the mock, but instead of just verifying that a method is called once, you verify that the arguments passed to that method were as expected.
Put another way, verifying behavior is sometimes the only window into a system and can be used to verify state.