Thanks for your input, @MarcusStrube @djordje and @PaulPoinet.
The answer is, "yes, there was". I am still in doubt about this, and I think we can modify the code to handle an extra tree parameter. The first issue is that the only "safe" way will be to always have a tree=True argument in all calls, which is longer than _tree(). Also, the fact that a function behaves quite differently in terms of returned types with a simple Boolean change is a little strange, but understandable.
The second issue is slightly more technical; Grasshopper itself can have any input marked as 'optional' (not only the last ones). Optional inputs can appear in any order, not necessarily be placed at the end of the input list.
To maintain constant behavior with the previous version, not assigning a non-optional parameter only produces a warning, and in its place the function uses the default value. E.g., as a result of this, the 'Pattern' in the 'CullPattern' component is
[False,False,True,True] even without mentioning it. The two things together make adding a new optional input slightly confusing.
If we do,
CullPattern([1,2,3,4]) will return
CullPattern([1,2,3,4], True) will not return the tree representation, but
[1,2,3,4], for example. Only
CullPattern([1,2,3,4], [False,False,True,True], True), or
CullPattern([1,2,3,4], tree=True) will return the tree.
These are the reasons, but the fact that many of you would prefer otherwise is making me rethink this. I'll work on this in the next days and see if I can make it work smoothly with the additional parameter.