First, a pitfall: On Hetzner, if you want to stop a server to save cost, you have to snapshot and destroy it, leaving it stopped costs exactly the same as having it running. On exoscale, stopping a server will make it cheaper, but not by a lot. It might cost about as much as leaving it running on Hetzner.
IMO at the time of writing, Hetzner wins the comparison by a lot unless you need the servers to be located in Switzerland. Not only is Hetzner much cheaper, but their snapshots are not tied to server instances, so you can launch servers from snapshots like with AWS AMIs. This seems to me like an important feature to achieve fast horizontal scaling easily without having to mess around with docker.
Exoscale offers firewall security groups similar to AWS and private networks, which is a nice touch. On Hetzner, they are just on the internet.
The model for storing lots of data on Hetzner is attaching SDD volumes to a server instance (up to 924GB). On Exoscale, you can have system partition sizes up to 800GB, but only for huge servers. In addition, they offer an S3-compatible storage system.
|Launch instance from snapshot||yes||no|
|Scale up stopped server||yes||yes|
|Firewall Security groups||no||yes|