We should almost always extract interfaces from your service classes because:

We should use dependency injection to load and compose implementations: to avoid the need of manually constructing chains of dependent objects and/or to be able to release implementation changes without rebuilding the entire solution, if dependencies are dynamically loaded.

We should isolate and test client callers and for this purpose we need mocking; mocking is a lot easier if the call is performed through an interface.

Rarely for polymorphism (although this might be their most obvious use): only if really, really needed – I’d say we should always consider composition first; thst would probably save us from much unforeseen trouble!