Usually you want to perform an operation with the fewest gates possible, because it's usually cheaper and simpler (and usually simpler means more robust). However a design might depend on what you are trying to optimize... this might be speed or power consumption or whatever. You might use more gates to avoid logic races, or allow use of some particular available chip, or fit things in physical space, or whatever.