I've seen things like this a few times before and there's a few suspects it could be.
You've already sorted out the SIP ALG one (I'm assuming Gamma aren't lying about it being off their router, but sometimes they are mistaken). There's also the external IP setting on the PBX which I seen often to be the cause (in the SIP trunk definition normally).
If that is set to anything other that the external NAT RTP goes missing in action. You can check this by running a TCPDUMP on the SIP packets during the call setup (I'd usually do this from the firewall, not sure if you can on a Smoothwall). I don't have an example to hand but during the INVITE stage you should see the external NAT IP showing up, if you post/send me that I can check if you'd like. If it's the internal, private IP of the PBX then that's the issue. You can also see this behaviour when the external NAT and firewall rules aren't allowing the right UDP packet range or is NAT'ing the traffic to the wrong internal IP. It's usually one (or more) of those. You can also TCPDUMP the RTP stream packets (which I presume are being generated but is worth checking) and see what's going on. Gamma will use a seperate IP for the RTP host so it's easy to do (and you should see a stream of UDP packets). That's a rough overview, hopefully one will either sort the problem out or point you in a better direction.
Regards