Sorry for reviving this old post, but what about something like:
private val _theThing = mutableListOf<String>()
val theThing = object : List<String> by _theThing {}
The verbosity is not as minimal as other solutions proposed but still very good. More importantly, you cannot cast the property theThing
to a modifiable list, since the modifiable list is not the object itself but encapsulated inside instead.