I think I've worked out what confuses me about this recipe.
say you have the bare minimum requirements in your inventory, regular bark, birch bark, stick and string.
First the recipe tries to pick an "any bark"
Second the recipe tries to pick a "birch bark"
It does its picking based on the order in which things were added to your inventory.
Therefore, if the birchbark went into your inventory after the regular bark, it will be picked by the algorithm as the "any bark" component. When it gets to the "birch bark" component, it can't find a free one, so you get the "not enough ingredients" message.
Solution would be to make sure the specific ingredient is before the broad ingredient in the recipe order. You could still end up using more birch bark than you expected, but it would stop someone with adequate ingredients for a single getting confused and not being able to make a boat without inv juggling