Well, for example, when dealing with multiple interpreters of an unknown amount, such as ones based on an arbitrary variable, it would be nice to be able to be able to add unique text outputs for each runtime-created interpreter to make each one have a unique I/O, like concatenating a "name" or "id" before the output. If you were to use function pointers, it would be close to impossible to determine which interpreter has that specific text output lambda without being able to capture unique information about it. Best you can do is probably hardcoded function pointers in an array that print a different prefix each, but those would need to be manually written and might not be enough if you end up with a higher number of interpreters.
Another thing is if you wanted to change intrinsic code in runtime which allows you to dynamically change their functionality by capturing a string or enum combined with an if or switch statement. Which would actually be an interesting way to change the "mode" of an intrinsic or generating new ones altogether based on specific calls, without having to make the user pass something as an argument each time.
In short, it's mainly for runtime code generation, which is mainly relevant to me wanting to use a secondary scripting language to be able to interact with the MiniScript API--and the current function pointer approach is making it difficult. But I'm fine with keeping it this way, this is definitely more of a "nice to have" and for your goals it will probably be better to keep it as-is. I can just make my own fork for such runtime-heavy projects. 😃