Cresselia is a Legendary.
That about sums it up. All Legendaries (with the exception of Rayquaza in ORAS) have a very low catch rate. This is because they are, well, legendary, and that means it shouldn't be a walk in the park to catch them. Here's Cresselia's catch rate:
Catch rate: 3 (0.4% with PokéBall, full HP)
Cresselia has an exceptionally low catch rate, as do all Legendaries (note that some,. such as Dialga, have slightly higher ones). If you want to make capturing her easier, take along a Pokémon with either Spore or Thunder Wave, as these status conditions will raise her catch rate by a little bit. I also reccomend bringing a heckuva lot of Ultra Balls and Timer Balls with you, as the battle will likely last for a long time.