Implement Smokey's !!/coffee command. (Part 2)
Jelly, 60 bytes
“¦ƘÇ=X⁸ẓÇsŻY»⁶“¢p ɼƁỴŒ?Ọi^gċ{çØLƲ`ẆĿJ$ȮȷẈv&amp;ẋȧ&gt;ċ8½c»ḲX⁶“Ƙa»⁶³

Try it online!
If you write a nilad while there's an argument Jelly just dumps it into STDOUT, which is really nice for this challenge because you don't need to worry about maintaining the list of output characters but rather just dump the outputs piece by piece.
Explanation
“¦ƘÇ=X⁸ẓÇsŻY»⁶“...»ḲX⁶“Ƙa»⁶³  Main Link
“¦ƘÇ=X⁸ẓÇsŻY»                 &quot;brews a cup of coffee for&quot;
             ⁶                &quot; &quot; (dumps previous string to output)
              “...»           compressed string with space-separated coffee types
                   Ḳ          split on spaces
                    X         choose a random value
                     ⁶        &quot; &quot; (dumps the coffee type to output)
                      “Ƙa»    &quot;for&quot; (dumps the space to output)
                          ⁶   &quot; &quot; (dumps &quot;for&quot; to output)
                           ³  get the command line argument (implicit output)

It's the same length to compress &quot; for&quot; as to place a space and then compress &quot;for&quot;. Unfortunately Jelly compressed strings don't seem to support trailing spaces, which unlike most situations actually matters here.