Consegui corrigir o erro usando aspas simples ao redor do comando / bin / bash -c, usando aspas duplas em torno do formato - e escape duas vezes o número da porta. O último comando ExecStart completo é:
ExecStart=/bin/bash -c '\
while true; do \
etcdctl set /services/tomcat/tomcat-%i/ip ${COREOS_PRIVATE_IPV4}:$(docker inspect --format="{{(index (index .NetworkSettings.Ports \"8080/tcp\") 0).HostPort}}" tomcat.%i) --ttl 180; \
etcdctl set /services/bind/tomcat-%i ${COREOS_PRIVATE_IPV4} --ttl 180; \
sleep 60; \
done'