Type systems are obligation propagation mechanisms. What obligations would you like to ensure propagate?
If you someday decide to introduce a third state, would you want the compiler to force you to reconsider each call site? If so, you need to use a parameter that you can later widen.
If you specifically don’t want to have to reconsider each call site if a third state becomes available, then use the separate functions.
