Просто добавьте геттер ко второму свойству, которое вызывает первое:
val <T> List<T>.myLast
get() = this.last()
var <T> MutableList<T>.myLast: T
@JvmName("someName")
get() = (this as List<T>).myLast
set(value) {
this[this.size - 1] = value
}
В этом случае вы также можете сделать get() = this.last()
, но изменение первого определения автоматически повлияет на второе.
Это будет решено так же, как перегрузка метода, например,
val x: List<String> = mutableListOf("")
val y: MutableList<String> = mutableListOf("")
x.myLast // calls List<T>.myLast.get()
y.myLast // calls MutableList<T>.myLast.get()