I've been using NGUI to create card games and it's worked quite well. I wouldn't use it for a game with a lot of moving/animating sprites though. The main advantage of using NGUI over the new 2D system is it's a unified way to combine sprites, labels (including embedded symbols), and input (UICamera) while reducing drawcalls. This was my thinking before UI2DSprite was added, however a mixture of UILabel and UI2DSprites would create a lot of drawcalls.
Neither system has a good way to adjust the depth a group of sprites such that no sprites can be drawn between them. Pushing a group of sprites to the front or back isn't always what you want, sometimes it needs to be just one depth ahead of another group of sprites. That feature would also be useful for games where the player character is composed of multiple sprites and walks in front or behind other characters.