Thanks, that explanation helps a lot. Based on your advice I tried modifying my gc_SetAuthenticationInfo() call and think I found a solution.
I was setting the "realm" in the IP_AUTHENTICATION passed to gc_SetAuthenticationInfo() to the ip of the SIP server, but I've found if I set it to a zero length string instead, the automatic re-issue of the REGISTER request occurs just as you described, and registration succeeds.
Thanks!