May be i don't get your question properly, but i think you have to create a pda per user, and put the user public key in the seeds.
then when you call your program, just add this pda address and you will be able to update the counter.
take care that your pda needs to be initialized first before being able to use it (may be create an instruction that only creates the pda, and add it if necessary in th transaction)
EDIT :
in the github you have this :
seeds = [b"extra-account-metas", mint.key().as_ref()],
meaning the seeds are derived from hard coded string "extra-account-meta" and from the mint address (dynamic). You can use any account instead of mint address, like "source" for example. Is that what you need ?
Or is the problem that in InitializeExtraAccountMetaList you don't have access to user's public key ?