With multiple pattern-matching, different numbers of arguments are impossible, even with point-free!
foo True b = b + 2
foo _ = id
doesn't work for example. But
foo True = (+2)
foo _ = id
does. Sometimes we can use point-free only in one part of the function, so...
Why? Is it too hard for GHC? :'(