Merci pour vos réponses.
Après avoir fait d'autres essais j'en ai conclu que ip mon addr n'est pas vraiment adapté (l'exemple montré est avec une IPv4) car le temps que toutes les ipv6 changent et passe en deprecated (ce qui dure quelques secondes), ça détecte une multitude de changement d'adresses et donc autant de redémarrage très rapides ce qui aboutit à ce genre de message:
août 06 01:47:23 CLAT systemd[1]: Started Restart clatd service with script.
août 06 01:47:23 CLAT systemd[1]: Stopping Restart clatd service with script...
août 06 01:47:23 CLAT systemd[1]: restart-clat.service: Succeeded.
août 06 01:47:23 CLAT systemd[1]: Stopped Restart clatd service with script.
août 06 01:47:23 CLAT systemd[1]: restart-clat.service: Start request repeated too quickly.
août 06 01:47:23 CLAT systemd[1]: restart-clat.service: Failed with result 'start-limit-hit'.
août 06 01:47:23 CLAT systemd[1]: Failed to start Restart clatd service with script.
Là j'avais créé un autre script pour faire un start et un stop de clatd (justement pour éviter le "repeated too quickly"). Qui était restart par ip-mon.service, vous suivez ?

Finalement j'ai opté pour une solution plus proche du vrai watchdog (merci kgersen pour l'idée) à base de ping que j'ai adapté d'un script que j'ai trouvé :
#!/bin/sh
IP1=8.8.8.8
IP2=80.67.167.77
while true; do
sleep 5
# Start first ping, remember its PID
ping -W 1 -c 1 $IP1 >/dev/null &
PID1=$!
# Start second ping, remember its PID
ping -W 1 -c 1 $IP2 >/dev/null &
PID2=$!
# Wait for pings to finish
if wait $PID1; then
echo "$IP1 is reachable, clat is working"
elif wait $PID2; then
echo "$IP2 is reachable, clat is working"
else
# None reachable, restart clatd
echo "All pings failed, clat is down, removing deprecated IPv6 and restarting clatd"
systemctl stop clatd.service
sleep 2
deprecated=$(ip addr show dev enp0s3 | sed -n '/deprecated/s/.*inet6 \([^ ]*\) .*/\1/p')
ip addr del $deprecated dev enp0s3
sleep 2
systemctl start clatd.service
sleep 1
systemctl start clatd.service
fi
done
Un truc m'avais échappé jusque là : parfois clatd ne prenait pas en compte le nouveau préfixe, mais restait avec l'ancien qui est donc deprecated. Évidemment, ça ne fonctionne pas et là c'est redémarrage en boucle sans résultat. Ça ne le fait pas à chaque fois, souvent au bout de la 3ème fois lorsque j'essaie de changer plusieurs fois d'IP rapidement.
J'ai donc rajouté la purge du préfixe déprécié à chaque fois et... ça marche nickel. Je peux changer 10x fois d'IP à la minute, ça repart toujours sans aucun soucis.
Puis j'ai foutu tout ça dans ip-mon.service et roule ma poule

J'espère que j'ai enfin trouvé la bonne recette.