VB6の実行環境がないので確かめていませんが、以下でいけるはずです。
Dim mf As MainForm Set mf = New MainForm
Call mf.SETDATA
正しい?(スマート?)なコーディング方法なのでしょうか?
正しいコーディング方法です。と思いますが、最新のVBには暗黙のインスタンスというのが追加され、VB6のように必ずしも明示的にインスタンスを生成しなくてもよくなりました。確かに初心者にはプログラミングの敷居が下がりましたが、上級者には反対される方も多いようです。