Does a GLM where the dependent variable is a rate without offset produce the same result when a count with offset is used? I have the following two models in Python:
import statsmodels.api as sm
from statsmodels.formula.api import glm

model1 = glm(" rate ~ explanatory variables", data=df, family=sm.families.Poisson())
model2 = glm("count ~ explanatory variables", data=df, family=sm.families.Poisson(), offset=np.log(df.exposure))

where rate is defined as $\text{rate} = \dfrac{\text{count}}{\text{exposure}}$.
I would expect these models to produce the same result, but they do not. The results are similar but not identical. My reasoning why they should be similar is as follows:
$$\begin{align*}
\log(\text{rate})&= \beta_0 + \beta_1X_1+...+\beta_nX_n + \epsilon \hspace{1cm}\text{(model 1)}
\\
&\Leftrightarrow
\\
\log\left(\frac{\text{count}}{\text{exposure}}\right) &= \beta_0 + \beta_1X_1+...+\beta_nX_n + \epsilon
\\
&\Leftrightarrow
\\
\log(\text{count}) - \log(\text{exposure}) &= \beta_0 + \beta_1X_1+...+\beta_nX_n + \epsilon
\\
&\Leftrightarrow
\\
\log(\text{count}) &= \beta_0 + \beta_1X_1+...+\beta_nX_n + \log(\text{exposure}) + \epsilon \hspace{0.5cm}\text{(model 2)}
\end{align*}$$
That is, if I add the logarithm of a variable that measures exposure and fix the coefficient at 1, the models are similar.
Question:
What is the difference between model1 ($\text{model 1}$) and model2 ($\text{model 2}$)?
My attempt to an answer:
The variable count from model2 has, by definition, a Poisson distribution. But what about the variable rate from model1? It is a continuous variable, so the distribution definitely should not be Poisson, right? My current understanding is that we use model1, because its distribution is known and easy to fit. I think both models will lead to the same coefficients, but maybe model2 follows the distribution more closely and is therefore more efficient. This increased efficiency leads to smaller standard errors (but the same unbiased coefficients).

UPDATE: So model1 is wrong, because it does not take into account exposure at all. Another approach of modelling model2 is model3 as specified below (they are equivalent):
model3 = glm("rate ~ explanatory variables", var_weights=df.exposure, data=df, family=sm.families.Poisson())


They are different models. Write $Y$ for the count and $T$ for the exposure time, and $X$ for predictors.  One model says
$$\log\,E\left[\frac{Y}{T}\mid X=x\right]=x\beta$$
The other says
$$\log E[Y|X=x,T=t]=x\beta+\log t$$
and so
$$\log \frac{E[Y|X=x,T=t]}{t}=x\beta$$
Since the expectation of a ratio isn't the ratio of the expectations, these are different in general.  On top of that, the standard errors will be wrong for a Poisson (as opposed to quasi-Poisson) model in the first case, because $Y/T$ doesn't have a Poisson distribution (it's not even integers)
They might be the same in some cases. For example, if $X$ is just a single factor variable and $T$ is constant within each group, the first model will reproduce the mean of $Y/T$ within each group, which is the same as the mean of $Y$ in the  group divided by the common value of $T$, which is the same as the second model.
