We can't implement $e^{iZ_1 \otimes Z_2 \otimes Z_3 \theta}$ with three separate rotations. In other words:
$$e^{iZ_1 \otimes Z_2 \otimes Z_3 \theta} \ne e^{i Z_1 \theta} \otimes e^{i Z_2 \theta} \otimes e^{i Z_3 \theta}$$
The implementation of this gate can be found in this answer. The $e^{-iI \otimes I \otimes I\theta} = e^{-i\theta} I \otimes I \otimes I$ term is a global phase gate and can be ignored for the case described in the question.
An implementation with Qiskit:
from qiskit import *
from qiskit.aqua.operators import WeightedPauliOperator
theta = 1.7
pauli_dict = {'paulis': [{"coeff": {"imag": 0.0, "real": theta}, "label": "ZZZ"},
{"coeff": {"imag": 0.0, "real": -theta}, "label": "III"}
]
}
operator = WeightedPauliOperator.from_dict(pauli_dict)
circuit = operator.evolve(evo_time=1).decompose()
print(circuit)
The output:
q3_0: ──■─────────────────────────■──
┌─┴─┐ ┌─┴─┐
q3_1: ┤ X ├──■───────────────■──┤ X ├
└───┘┌─┴─┐┌─────────┐┌─┴─┐└───┘
q3_2: ─────┤ X ├┤ U1(3.4) ├┤ X ├─────
└───┘└─────────┘└───┘
That coincides with the ideas discussed in this answer ($u1$ and $R_z$ gates are different just by a global phase). Note, that here $e^{-iI\theta}$ is a global phase and can be neglected (as was done in the circuit). However, as was discussed in this answer the controlled-$e^{-i I \theta}$ should be implemented if one needs to construct controlled-$e^{-i H \theta}$, where $H$ is a sum of tensor product terms of Pauli matrices with real coefficients (like $H = I - Z\otimes Z\otimes Z$ in the question's example) and one of the terms is $I$. Also, note that the code presented above works only for such $H$ whose terms commute. For more general cases one should also specify the rest of the arguments of the evolve
method in order to implement for example first-order Trotter decomposition.