I think it's a great idea to make a "practice Create PT" using real-life analogies to help students ground these ideas in more familiar contexts.
A key factor that's brought out in this activity is a relevant and authentic need to manage complexity (when students are asked to make different types of sandwiches). I think that's also done well in the actual programming levels of the code.org curriculum (with the turtle and drawing the underwater scene), but this activity might give extra reinforcement of the ideas in parallel for students who are overwhelmed or still have anxiety over programming - it tells them these ideas aren't "programming concepts", but rather general problem-solving ideas/strategies that we can also implement through programming.
An issue my students had (in addition to having trouble identifying "abstraction-able" portions of their project) was thinking of a project that had the "right" amount of complexity that allowed them to have a parent-child-child algorithm.
This analogy could be used as an example of how you can scale up or down the level of abstraction. As you stated, there could be a need to make a function for spreading any ingredient. If this isn't complex enough, we can scale up and think how this would fit into a larger context, say packing a sack lunch, and what other functions might be useful? Ex: parent algorithm is packLunch and two children: makeSandwich(type) and packSnack. Or have students think of what are other functions (child algorithms) they can add to makeSandwich? (Ex: spread(ingredient), addMeat(meat), addCheese(cheese), pickBread(bread))
If time is an issue, I would probably just have students write algorithms for the other sandwiches without actually building the sandwiches - which would save us the trouble of buying sunflower seed butter