O RestartSec parece ser usado apenas se esse serviço específico for o reiniciado por meio do comando systemctl restart.
Por exemplo, eu tenho dois serviços, A e B.
[Unit]
Requires=network-online.target
[Service]
ExecStart=A-stuff
Restart=always
e
[Unit]
Requires=A.service
After=A.service
[Service]
ExecStart=B-stuff
Restart=always
RestartSec=30
Se você fizer uma reinicialização do systemctl B, funcionará conforme o esperado ... mas se você fizer uma reinicialização do systemctl A, os dois serviços serão interrompidos e iniciados imediatamente novamente, sem demora.
Aparentemente, o Systemd está usando apenas os valores de configuração para o serviço especificado e os ignorando para quaisquer dependências.
Isso não é tão incomum quanto parece. Se B falar com um servidor remoto, iniciar e parar rapidamente poderá falhar devido à rejeição remota do cliente pela extremidade remota. Mas reiniciar A diretamente acontecerá sempre que A for atualizado sem uma alteração em B.
Provavelmente, você pode contornar isso adicionando o atraso a A também, mas você NÃO PRECISA fazer isso, pois quebra o isolamento do objeto, informando A sobre B quando A não é uma dependência.
systemctl stop myservice && sleep 3 && systemctl start myservice