Digging into what mapAsScalaMap is actually doing, it returns a wrapper of type JMapWrapper (source code here), which provides a (Scala) Iterator (that extends AbstractIterator), providing implementations of next and hasNext.
Now, scala's Iterator trait does not include a remove() method, so what is happening at the line it.remove(), is that the Scala compiler looks for an implicit conversion that would convert the Scala Iterator into something that has a remove() method - and finds scala.collection.JavaConversions.asJavaIterator, which you almost surely have available in scope because you likely just bulk imported all the java conversion functions via import scala.collection.JavaConversions._ (or similar).
This method, asJavaIterator, returns an IteratorWrapper (defined in the same source file) which specifically defines the remove() method as throwing an UnsupportedOperationException.
Moving on to the updated part of the question, using smap.remove(k), this is handled by the wrapping JMapWrapperLike by passing the call on to the underlying java map, which will typically throw a ConcurrentModificationException if you try to remove an entry from the map, then call hasNext() on an associated (Java) Iterator, which you have, wrapped in the IteratorWrapper called it.
As to how to fix all of this, first I would need to know why you need to remove the entry in the first place - what are you trying to achieve here?
nextlike that - The first one gets the key of the first tuple in the iterator, the second one the value of the second tuple. You probably want the key and the value of the first tuple.