It depends on the use-cases that you are solving with a deployment. For most use cases applications need to be exposed by service over HTTP/TCP layer to receive traffic and load balance between replicas.
Some applications does not need to be exposed by a service and load balanced at HTTP or TCP layer but you may need multiple replicas to be running using a deployment.For example if you have a non HTTP/TCP application which processes a batch of records periodically or triggered by an external non HTTP/TCP event. Having a deployment in this case makes sense because you can easily scale up/down or rollback and make use of other key features provided by deployment.
So in short depending on the use cases deployment without a service sometimes makes sense. Service is only needed to do load balancing between multiple replicas at HTTP/TCP layer.