The "%s" is to be used in the prompt, as in:

if ! yes_no_mk3 'Do you want to continue? %s ' 'N'; then

It indicates the point at which the possible responses are shown in the prompt, using capitalisation to denote which is the default. I used '%s' because I'll be using the prompt string as a format definition for printf, and '%s' means "substitute a string of arbitrary length here".

The use of printf to write the prompt string allows  the format to be defined when calling the function. The way it's laid out is:

printf -v prompt "$prompt" "[Y/n]" 

because the '-v prompt' saves the result in variable 'prompt' (rewrites it).
The  "$prompt" is the format string like when you do:

printf "The answer is %d\n" 42

giving:

The answer is 42

In this case however, the text to be substituted for '%s' is "[Y/n]".

None of this would work with:

prompt="${prompt} [Y/n]"

In my example function call above you'd get 'prompt' containing:

"Do you want to continue? %s  [Y/n]"

No substitution would happen.

Of course you could redesign the function to simply append the "[Y/n]" to the prompt in the way you did. I just liked the flexibility of being able to place that part of the prompt where I liked.

Hope that helps.