As to why Shang isn't S-tier: I still think he is a very good character. Zoning aside, he still has some great frame traps. Mixed in with his zoning, he can still get the job done. The strange thing about Shang is that he matches up pretty well with the top tier in (with the exception of Raiden). Even if he is at a disadvantage, it is still very doable. The people that he struggles against come mainly from the lower tier: Jade, Noob and Stryker, which of course affects his tier position. I personally feel that NRS got lazy with the soul steal buff. They basically made the assumption that if the Shang player is good with everyone, then nerfing some of his upskull resets and giving everyone armor shouldn't matter. We have yet to see a Shang who is good with everyone, but even if you know the other character, 5 seconds isn't enough to play them. I think a good adjustment would have been to remove the damage boost from the soul steal and make the morph last longer (similar to past games). As it is, the best thing about the soul steal is that it prevents wakeups, controls space and is safe on block. When it hits, it isn't that great of a move.
Mileena: I used to think this was a bad matchup, but I now feel it is the other way around. She has to be very careful with D+4 because it can be blown up by ground skulls. She also has to take more risks to be effective because Shang can punish all of her specials hard. A blocked telekick and ball is punishable by 1,2,1,2 soul steal or upskull reset. This is particularly effective against her because all of her wake up attacks are punishable, so she is forced to block which leads into Shang's frame traps.