The first step here is one that I can't help you with: know your rights, responsibilities, and expectations. If you're running a site, or if you're part of a team, know what's expected of you, and what you're legally bound to do. The actions you can take are limited by this, full-stop. Beyond that, any verbal/written agreements and expectations you've set up need to be respected.
The general steps to dealing with a significant change like this are as follows:
Determine the information you're allowed to share. Don't necessarily stick to what's written down; ask people if they're okay with certain information being released. For instance, if you're dropping a moderator, make an attempt to work with them to determine what they'd be okay with making public. Document this discussion thoroughly.
Any information can be made public with the consent of the involved parties, so if you'd like to talk about something with your userbase, just ask if it's okay to make public. Chances are, you'll be able to provide more information this way.
Lastly, remember that information about what you can't say is just as valuable as information about what you can. If you tell people, "we asked, and it's not something we can make public," they'll at least know you're trying to keep them in touch and informed.
Organize notes on which groups are allowed to know what. It will be much better in the long run if the information you deliver is both as consistent and accurate as possible to each group.
Prioritize your lines of communication. If you've been running things smoothly, chances are you already have one or more lines of communication open to various groups within your community. Prioritize in your head which groups need information first.
If you don't currently have solid lines of communication open, there's no time like the present. Do so immediately, because failing to do so means tensions will build with no outlet.
Do what you can to notify people in advance, in order of communication priority. The more warning people have, the less likely a change will come as a shock. Recognize that this communication is two-way - others are going to have concerns about what's happening, and thoughts on what needs to happen. This isn't just you telling people what's going on; other people are affected, and are looking to you to lessen the impact.
Sometimes, though, sudden changes are unavoidable, which means...:
If you think it's going to be a while before you can talk, tell people just that. As an example, in the reddit case, much of the tension could have been alleviated by saying "Yes, there are changes, but we're not ready to talk about them publicly yet."
Recognize that, no matter what you change, someone is going to walk away dissatisfied. This is key: every change is met with some resistance. You, as a neutral moderator, need to recognize not only what the resistance is, but who it's coming from, and why they might be resisting. As things evolve, it's important to identify information that might alleviate concerns.
If you spot a hole in information that might alleviate tensions, go back to step 1. Organize information you can share, then share it with the relevant groups in order of priority.
I won't claim that this is complete, and I'm fully open to suggestions on steps which should be included. However, the core of the philosophy is: keep people as informed as possible, but recognize that you won't be able to keep everyone informed continuously, so prioritize groups and keep them as informed as possible.
Generally, humans (in a stable community) are very understanding; you just need to give them something to understand.