With the first definition, the function takes two arguments. Trying to pass a single tuple to it will not work.

julia> L = (x, y) -> x * y
#5 (generic function with 1 method)
julia> methods(L)
# 1 method for anonymous function "#5":
[1] (::var"#5#6")(x, y)
@ REPL[26]:1
julia> L(1,2)
2
julia> L((1,2))
ERROR: MethodError: no method matching (::var"#5#6")(::Tuple{Int64, Int64})

The second method takes a single argument, a tuple of two values.

julia> M = ((x, y),) -> x * y
#9 (generic function with 1 method)
julia> methods(M)
# 1 method for anonymous function "#9":
[1] (::var"#9#10")(::Any)
@ REPL[31]:1
julia> M(1,2)
ERROR: MethodError: no method matching (::var"#9#10")(::Int64, ::Int64)
julia> M((1,2))
2

The MethodError has nothing to do with destructuring syntax. It’s just about the arguments taken, 1 or 2.