I usually differentiate the two as follows:
Moore --> outputs (synchronous or asynchronous) are dependented on only the state of the FSM
Mealy --> outputs (sync or async) are dependent on the state and inputs of the FSM
When designing I typically try to implement moore style FSMs; however that doesn't work when your statemachine needs to drive other logic based on immediate changes to the stimuli. So depending on the pipelining of your logic surrounding the FSM moore implementations are not always possible because it might cause your FSM to drive outputs too late.
Normally I do a hybrid where the state machine is a moore FSM with some additional conditioning logic added to the outputs after the FSM to give it 'mealy like' timing for all the stuff downstream. For me I find it's easier to code that way rather than implementing a mealy FSM directly, but the functionality is the same.