I figured out why this happens; the wlan frequency has to explicitly configured to the same frequency as the AP the virtual client is trying to connect. By default the frequency is set to “auto” (i.e. most probably set to a channel not matching the nearby AP).
/interface wireless set frequeny=xxx
@mikrotik is this a known limitation that auto frequency mode cannot be used for wireless virtual interfaces? Explicit frequency configuration becomes a problem every time the nearby AP changes frequency.