Why can't we always have the zero-mean-condition assumption in linear regression? I've read Zero conditional mean assumption (how can in not hold?).  
In linear regression, we assume the model follows
$$y_i = \beta_0 + \beta_1 x_i + \epsilon_i
$$
under the assumption that $\mathbb{E}(\epsilon|X) = 0$.  
However, I don't see why we must have that assumption, even if $\epsilon_i$ and $x_i$ are correlated.  
Because if $\mathbb{E}(\epsilon|X) = c \neq 0$, then why can't we just assume another model
$$y_i = \underline{\beta}_0 + \beta_1 x_i + \underline{\epsilon}_i$$
where $\underline{\beta}_0 = \beta_0 + c$ and $\underline{\epsilon}_i = \epsilon_i - c$ 
and applying the typical algorithm, we can find estimates for these new parameters?
 A: My answer:  
Although it is mathematically correct to do this, a couple of problems arise when not assuming the condition that $\mathbb{E}(\epsilon|X) = 0$.  
If this condition is not assumed, there is ambiguity in the estimates for the parameters. For example, if the intercept term is estimated to be $0.5$ in the first model, the (equivalent) second model can give us an estimate of the intercept term as being $1.5$ (if originally, $\mathbb{E}(\epsilon|X) = 1 \neq 0$.
A: It is correct that when an intercept term is included, the assumption $E[\epsilon|X]=0$ can be relaxed to $E[\epsilon|X]=c$, where $c$ is some constant. This is what you have derived above, and is not a violation of strict exogeneity.
Strict exogeneity is violated when the conditional expectation varies with the value of $X$, i.e. $E[\epsilon|X=x]=w(x)$. For example, consider a simple linear regression model:
$y=\beta_0+\beta_1+\epsilon$
If there is an omitted variable that (1) affects the dependent variable and (2) is correlated/varies with $X$, then $E[y|X]=\beta_0+\beta_1X+E[\epsilon|X]$. You can see that $E[\epsilon|X]$ no longer drops out of the right-hand side of the equation (as is the case when strict exogeneity holds). Note that omitted variables are not the only source of endogeneity.
