Normally a City-State will just raze any city that it managed to capture.
This could make giving a City-State lots of units a handy way to destroy a city or two in the vicinity of the City-States (remember, they don't roam far from their borders) without getting the world mad at you; you just have to ensure the CS stays at war with the target player until the desired target is destroyed.
However, for any city that it captures that cannot be razed - that is the original capital cities of the main Civ players and any other City-States - the capturing City-State simply takes the city as a puppet, leading to the odd scenario where a City-State player controls more than one city!
What they do not do is liberate the target if it could - for example, in my current game, Venice has just captured Stockholm, which was being held by the Aztecs. They didn't liberate Stockholm, just took it as a puppet, and so Venice now controls both cities (and the Stockholm player is still "out" of the game).