The string subpattern
StartOfLine ~~ __ ~~ "::" will match any characters, including line endings. That is why the first match spanned line boundaries: it was the "shortest" match starting from the first start-of-line found.
To prevent this behaviour, we must explicitly exclude line endings. For example:
Shortest[StartOfLine ~~ Except["\r"|"\n"].. ~~ "::" ~~ __ ~~ EndOfLine]][]
(* "ss::x" *)
The line ending characters are specified explicitly since
Except in string patterns can only be applied to single characters -- and line endings are multi-character in general across platforms.
Shortest might imply that it will find the shortest possible match, but it really only means the "shortest match starting from the initial search point". This point is elaborated further in (72283). The present question might be considered to be a duplicate of that other question, but a distinction might be drawn due to the added complication of applying
Except to line endings.