Restart=always does not mean always. systemd applies a start rate limit, controlled by StartLimitIntervalSec and StartLimitBurst, whose defaults are 10 seconds and 5 starts. A service that exits immediately hits the limit within seconds and lands in the failed state with 'start request repeated too quickly' in the journal, after which nothing restarts it until an operator intervenes.
This is the intended design: it stops a broken unit from consuming the machine. The mistake is reading the message as the cause of the failure rather than as a consequence, and the real error is in the entries just above it.
Recover with 'systemctl reset-failed NAME' followed by 'systemctl start NAME'. To tune, set StartLimitIntervalSec and StartLimitBurst in the [Unit] section, note that they moved there from [Service] in systemd 229 and a stale example may put them in the wrong section, and add RestartSec to space attempts out. Setting StartLimitIntervalSec to 0 disables the limit entirely, which is only appropriate when something else supervises the machine.