Pesquisando pude entender que a primeira opção roda usando privilégios do criador da procedure e a segunda é que roda com os privilégios do usuário que está usando.....seria isto mesmo? Se for isto, alguém pode por favor me dar um exemplo prático disto, porque com estas definições não pude entender claramente o que cada um destes fazem na hora da execução da procedure.
Cara, nunca testei isso aí na prática, mas vou tentar explicar...
Imagine uma procedure que em seu código faça um insert na tabela A e que ela foi criada pelo usuário A com AUTHID sendo DEFINER (comportamento padrão).
Para que o usuário B consiga executar esta procedure, basta conceder a ele somente privilégio de EXECUTE nesta procedure. Ele não precisa de privilégios na tabela A.
Porém, se o usuário A tivesse criado esta procedure com AUTHID sendo CURRENT_USER, então o usuário B precisaria de privilégios na tabela A, já que dentro do código existe um insert nesta tabela.