Да, это возможно. Используемый атрибут называется tailclip
:
Если true, хвост ребра обрезается до границы хвоста
узел; в противном случае конец ребра переходит в центр узла,
или центр порта, если применимо.
Просто измените свою последнюю строку на
a:rest -> b [label="foo", arrowtail=dot, dir=both, tailclip=false];
Редактировать: Как @Kyborek упоминает в комментариях, для текущих версий graphviz необходим дополнительный компас:
a:rest:c -> b [label="foo", arrowtail=dot, dir=both, tailclip=false];
См. Также этот ответ