그건 님의 프로젝트 아키텍쳐와 관련이 깊어요.
ViewModel의 경우는 ViewModel을 사용할 때만 사용이 가능하구요. ViewModel을 선호한다면 사용ㅎ시면 돠구요. 그렇지 않으면 Interface를 이용할 수 있겠죠.
Result API는 startForActivityResult와 같이 다른 곳에서 결과값을 받을 때 사용하므로 용도가 살짝 다릅니다.
결론적으로 이런 아키텩쳐에 관한 질문은 정답이 없어요.님의 상황에 따라 선택하시면 됩니다.