A Perspective:
Given that Haskell's >>= signature is:
( >>= ) :: (Monad m) => m a -> (a -> m b) -> m b
You need to make sure that you properly recognize the types of a and b.
Given the initial part of the expression ...
[ [1] ] >>= ...
This suggests that m corresponds to [], which then implies that the type a refers to [Int].
Given this recognition, Just doesn't have the appropriate structure. In order to be consistent with what you have, you'd need something like:
f :: [Int] -> [Maybe [Int]] = \x -> [Just x]
If you use that, then you should get:
ghci> [[1]] >>= f
[Just [1]]
In Scala, if you do something like:
trait Monad[M[_] : Applicative]:
extension [A](a: A)
def rtrn() : M[A] // Scala version of Haskell's return
extension [A](x: M[A])
def >>=[B](h: A => M[B]): M[B]
def >:>[B](y: M[B]): M[B] = x >>= ( (_ : A) => y )
In order to have the code be simple and be consistent with Haskell's general picture, it is assumed that Functor and Applicative have also been defined. The notation used above is not idiomatic Scala, but rather used to draw a greater parallel with Haskell's syntax. Notice that rtrn is used instead of return and >:> instead of >>.
An instance of Monad for List could look like:
given Monad[List] with
extension [A](x: A)
def rtrn():List[A] = List( x )
extension [A](xs: List[A])
def >>=[B](h: A => List[B]): List[B] =
xs.fmap(h)
.foldLeft(List() : List[B])( (_ ++ _) : (List[B], List[B]) => List[B])
Since it's assumed that Functor and Applicative have been written, fmap would be defined in the Functor trait.
Using this, you can replicate the Haskell result in Scala.
scala> List(List(1)) >>= ( (u : List[Int]) => List ( Some ( u ) ) )
val res0: List[Some[List[Int]]] = List(Some(List(1)))
As others have indicated, Scala's flatMap is essentially just a more general form of >>=. Thus, when applied like the above, you get the same result!
scala> List(List(1)).flatMap( (u : List[Int]) => List ( Some ( u ) ) )
val res4: List[Some[List[Int]]] = List(Some(List(1)))
Abstracting things just a little bit, the effective type-signature for flatMap is effectively (using Haskell syntax):
flatMap :: (Monad m, ??? t) => m a -> (a -> t b) -> m b
The ??? above is something that includes the Monad kind, but is even weaker (thereby making it to be more general).