This should only be happening if you have selected the ‘Create Discourse User on Login’ setting on the SSO Provider tab, otherwise the user won’t be created until they log into the forum, either by clicking the ‘login’ button on Discourse, or by clicking a login link on the WordPress site.
Yes, I think the best way to approach it with a membership plugin is to create the Discourse user through the API when they register for a membership. This won’t create any issues with SSO. The first time they login to the forum the Discourse user will be matched with the WordPress user through their email address.
Which membership plugin are you using? I’ve made a plugin that works with the WIshList Member plugin. I think it does what you are looking for.