This wouldn't work very well for arrays that concatenate the same but have different values. Consider:
@one = (undef, 1, 2); # "12"
@two = (1, undef, 2); # "12"
@one = (12, 3, 4); # "1234"
@two = (1, 2, 34); # "1234"
The Array::Compare module basically does a join() using an unlikely delimiter (like a pipe character or \0 or \255). Unfortunately, my own benchmarks typically put a "brute force" comparison faster than Array::Compare (sometimes significantly, depending on the amount and type of data in the two arrays), especially when dealing with numeric items in the array. Conversions of data types to strings plus string comparisons tend to be expensive in bulk. If you're working with string data, it might not be so bad.