If one PABX was using re-invites and the other not, the speech path for the re-invite one would be direct between the phones, but the signalling path would be towards the PABX.
The big problem here is that, if there are no re-invites, there will be essentially no difference in how Asterisk handles the DSL to DSL case from the DSL to internal case, because it will handle the two legs of the call independently.
Whose public IP address? As I understand it the DSL phones’ public address is their only address. I presume that the LAN and Asterisk have a private address.
Without re-invites, one would expect the SDP from the remote phones to have the remote phones’ public address and the SDP from Asterisk to have Asterisk’s public address, and one would expect that both for the remote to local case and the remote to remote case. The big problem is that, for each leg, one would expect the same result as though the other leg was the internal phone. Without re-invites, the SIP protocol for the two parties is decoupled in a way that means that the other side would not know whether it is talking to remote or local.
With re-invites, one would expect the SDP from Asterisk to have the (public) address of the other remote phone, when going remote to remote.
Can you double check that you are not actually getting native bridging.
Also, is the audio connection failure in one direction, or both directions?
Are the remote and local phones of the same type?
Do the traces or RTCP statistics indicate that Asterisk is receiving RTP packets?