I'm a Canadian Citizen. I had to pledge my "loyalty and allegiance" to the Queen of Canada. Even though I'm a staunch republican (in the traditional sense not American - I'm anti-monarchy)
I don't base my decisions going through life on "But I pledged allegiance to the Queen, so I can/can't/should/shouldn't do that"
Citizenship is not an indication of ethics, or priorities, it's a practical requirement of being a human existing in society. To be able to live in a country without a constant nightmare of bureaucracy, you pretty much need to be a citizen. Snowden lives in Russia, not being it's citizen would be a constant headache.
And what would you do? You can't just keep applying residency permits forever, and desperately hoping that you'll get another 3 years. If you don't get approved for another 3 years (during that nerve-racking waiting period), you're screwed. Becoming a citizen is the best guarantee of stability after his actions, and it's not like the US or their allies are going to welcome him with open arms anytime soon.
He also is married and has two children. You aren't going to raise children on a residency permit.
Feeling a duty to fight in the Iraq War,[10] Snowden enlisted in the United States Army on May 7, 2004
Staying alive and out of prison? That's just a basic survival instinct.
This seems to be a perfect example of a moral compromise. Snowden had a stated moral that freedom from government surveillance is incredibly important. Now he swears allegiance to a country that is even oppressive when it comes to surveillance and other authoritarian practices. That is a moral compromise.
The motivation can make that compromise understandable, but it doesn't stop being a compromise. It is irrelevant whether he made it for his personal safety, the safety of his family, or just to avoid the "constant headache" other people in this thread have stated, it is still a compromise.
And it doesn't make him a hypocrite either. To focus on that is ridiculous given the context.