There's two valid use cases for this:
1. Testing. The trait makes it easier to mock a dependency. In this case the second implementation is in the testing codebase.
2. Quick overview and contract.
If you have a `trait DoThing { def firstThis() def thenThis() }` it very clearly shows what the trait is meant to do with what contract, even if the actual implementation is 500 LOC with 15 private methods.