Asterisk is not the connection endpoint but forwards the request, so it is a SIP proxy.
That's why it is correct that it sends a 407.
It would help to have a trace from Zoiper (you can make one
with tcpdump or wireshark) to see the difference.
As for the 488 - there might be various reasons, like that it cannot resolve the
target, cannot match codecs...
Maybe asterisk logfiles could tell you more.