Here are two methods that are quite fast for flat lists (you can flatten arrays to test at deeper levels):

 const = ConstantArray[1, 100000];
 nonconst = Append[const, 2];


Using `CountDistinct`:

 CountDistinct[const] === 1
 CountDistinct[nonconst] === 1
 
>True

>False

Based on pattern matching:

 MatchQ[const, {Repeated[x_]}]
 MatchQ[nonconst , {Repeated[x_]}]

>True

>False

# Timings

 CountDistinct[const] // RepeatedTiming
 MatchQ[const, {Repeated[x_]}] // RepeatedTiming
 
>{0.00021, 1}

>{0.0051, True}

`MatchQ` has the advantage that it short-circuits when a list doesn't match:

 nonconst2 = Prepend[const, 2];
 MatchQ[nonconst2, {Repeated[x_]}] // RepeatedTiming

>{6.*10^-7, False}