Asterisk 1.8 INbound Caller ID from registered SPA3000

You don’t have a trustrpid=yes line. Without that, Asterisk will use the From header as the caller ID, even if an RPID header is present.

You did not mention RPID before, and that was key to the question, but you did use confusing terminology. Asterisk extensions are things that appear in extensions.conf. An external device need not even have one extension number associated with and may have many.

Also you definitely did introduce ring groups into the question:

I’m guessing the SPA3000 is a SIP PSTN gateway, in which case it isn’t even an extension in FreePBX terms.