We've moved twice with little ones now, first with a just-turned 3-year-old and this time with one who was almost 3 and one who was just-turned 5.
With the first move, when DC1 was 3, I didn't really explain much in advance because of the level he was at. With the second move, with DC2 being almost 3 (and because DC1 was a bit older now) I showed them both photos of the house on Rightmove and showed them which room would be theirs and in the weeks before we moved I bigged it up massively as "look we're moving out of our tiny old flat and moving into this amazing massive house where you'll have your own room instead of sharing and look how good it is!"
I also put on some of the episodes of Topsy and Tim that cover their house move because they both love T+T and we talked about how we were moving just like Topsy and Tim.
DC1 seemed to take it in his stride when we moved last time but really he struggled (moved from rural Ireland to a London flat) and started acting out, hitting us etc but he did get over it after a few months.
This time, DC1 has settled fine (he was the one I was worried most about) but DC2 has struggled a bit and sometimes she tells me she wants to go "home" to our little flat and wakes up in the night looking for other people quite often (she slept through before). It's early days since the move though so I'm not worried.
DC2 has always been very advanced with language and DC1 wasn't, so IDK if that's why they've been so different.
I don't think there's a perfect way to tell them but they do adjust in time at this age.
Edited to add: These were both long-distance moves so change of favourite places, shops, routines and childcare arrangements.