I'm not the person who said the dresses run small, but I also have a 4 year old and thought I'd chime in. I would definitely go with the XS for your daughter.
I personally do not find that the dresses run small at all. My 4 year old is about 39 inches and 37lbs, so short and solid, and she wears the XS Belle dress comfortably...and daily. LOL She wears sz. 4 pants normally, but can fit into some 5's if they are not too long, and sz. 5 shirts.
My older DD(7.5) has a sz. S dress (Cinderella) and its quite big on my 4 year old. She *can* wear it, but I wouldn't have her wear it around the parks or whatever because its too large for her when it all comes down to it. The small fits my 7 year old perfectly. For comparison, she is 48 inches and 46lbs. She wears a sz. 6 pants and 7/8 shirt.