Short answer, I was pointing my incoming calls at an extension. Pointing my HT-503s at the trunk that was configured for outbound calls allowed the Caller ID info to display.
So the long version. I was following the wiki page here:
Setting Up An HT-503
And these instructions do work. You end up with a functional system. But as the page says, caller id has not been addressed. The author has the user create an extensions and then forward incoming calls - the Unconditional Call Forward step - to that extensions. This works but your calls will be formatted as if they are internal calls. The Caller ID information is stripped and replaced with the extension information.
Instead, I deleted those two extensions and pointed my HT-503s to the trunks that I setup. They were setup at port 5062 and interestingly I changed one HT503 to forward to port 6052 but forgot the other and it was still going to port 6050. Both still worked inbound. I think Asterisk was smart enough to match up the username that was setup as long as the unneeded extensions were removed.
I did not configure the “Inbound” portion of the trunk. They both still worked.
Side note, Your trunk needs to have its name set to the same number id string the HT-503 is sending as a user. This needs to be set in both the General page and the SIP Settings page.
I realize this is all pretty FreePBX specific. But hopefully it can provide help to someone stuck in my same rut.
Thank you everyone who gave input. Talking to those with an Asterisk viewpoint is very valuable.