I do not agree with other answers saying that syncing is not correct. At the time of this writing multi-deployment applications (be they microservices or whatever you want) are a real thing. Often they use separate DBs, so joining data between them is not always an option. These separate deployment/separate DB applications have to synchronize their data and the industry is satisfied with the "eventual consistency" model.
So, in my opinion, syncing is a valid option. Specifically, "Sync via a Keycloak Event Listener SPI on registration/updates". This is a good option because you don't waste CPU/network "cycles" for each request to get potential updates for an infrequently changing piece of data (the user). Not necessarily the correct one, but valid.
If you go for this option, it would be very convenient to use Keycloak's UUID as the key of your private User table, as mentioned in other answers. Make sure to copy only the absolutely minimum set of data your application needs, not more. Certainly not any kind of credentials!!!
This way you have direct, local access to the user information from your application(s), saving you the cost of doing the external call to Keycloak every time you need it and saving Keycloak some resources from replying to the application the same data over and over again. A good caching could protect you from this problem too, if you can sort out the caching invalidation rules.
Speaking of caching, another idea would be to execute the actual call to Keycloak every time you need the user details; but cache the result, so it is only executed once. Use Keycloak's event to invalidate the cache.
I am not sure how are you thinking to implement B? Somehow link the DBs (deploy Keycloak & app in the same DB? Create a link between DB servers? etc). Anyway, I assume a foreign key from your model to Keycloak's. Wouldn't this couple the models a bit too much? Still, it is also valid solution.
Bottom line: in my opinion both are valid. I would choose syncing through Keycloak events, but you should choose whatever fits your needs best.