И происходит такое именно из-за авто каррирования. То есть компилятор вместо того, чтобы пользоваться условными Func<string, string, bool> (так как каррирования по сути нет), компилятор фигачит FSharpFunc<string, FSharpFunc<string, bool>> и пуляет их через new()