One should make a distinction between the specific Heckman sample selection model (where only one sample is observed) and Heckman-type corrections for self-selection, which can also work for the case where the two samples are observed. The latter is referred to as control function approach, and amounts to include into your second stage a term controlling for the endogeneity.
Let us have a standard case with an endogeneous dummy variable D, an instrument Z:
$$Y= \beta + \beta_1 D +\epsilon$$ $$D= \gamma + \gamma_1 Z +u$$
Both approaches run a first stage (D on Z). IV uses a standard OLS (even if D is a dummy) Heckman uses a probit. But besides this, the main difference is onin the way they use this first stage into the main equation:
- IV: break the endogeneity by decomposing D into parts uncorrelated with $\epsilon$, given by the prediction of D: $Y= \beta + \beta_1 \hat{D}+\epsilon$
- Heckman: model the endogeneity: keep the endogenous D, but add a function of the predicted values of the first stage. For this case, it is a pretty complicated function: $Y= \beta + \beta_1 D + \beta_2 \left[\lambda(\hat{D})-\lambda(-\hat{D})\right ] +\epsilon$ where $\lambda()$ is the inverse Mills ratio
The advantage of the Heckman procedure is that it provides a direct test for endogeneity: the coefficient $\beta_2$. On the other side, the Heckman procedure relies on the assumption of joint normality of the errors, while the IV does not make any such assumption.
So you have the standard story that with normal errors, the control function will be more efficient (especially if ones uses the MLE instead of the two-step shown here) than the IV, but that if the assumption does not hold, IV would be better. As researchers have become more suspicious about the assumption of normality, the IV is used more often.