intervals[a_List] := {a[[Prepend[# + 1, 1]]], a[[Append[#, -1]]]}\[Transpose] &@
SparseArray[Differences@a, Automatic, 1]["AdjacencyLists"]
f1[a_List] := (Pick[a, #, 1] & /@ {#~Prepend~1, #~Append~1})\[Transpose] & @
Unitize[1 - Differences@a]
f2[a_List] :=
Pick[{a, a}, {#~Prepend~1, #~Append~1}, 1]\[Transpose] & @ Unitize[1 - Differences@a]
a = Delete[#, List /@ RandomSample[#, 15000]] &@Range@1*^7;
timeAvg @ # @ a & /@ {intervals, f1, f2} // Column