i asked about this issue on the ardour forum and paul davis (the main developer of ardour) gave this answer:
All JACK clients can report latency on their ports. Pd is not reporting latency correctly on its JACK ports. If it did, the result of the send via Pd would still be aligned correctly.
To correct this you need to use an "artificial latency" plugin (in the SWH plugin set) to fake the latency that Pd is adding. There's no way to know what the number is so you just have to play with it until ardour does the right thing. Oh, and you need to know one other thing: Ardour only does latency updates at each transport stop, so you need to adjust/stop/roll/adjust/stop as necessary.
furthermore, there seems to be latency correction for other jack apps, if they report it.
hope this helps.
is the jack implementation in pd reporting the latency?
Thanks for taking the time for this.
Lorenzo