Is that just to give passengers more time to go through the immigration, or are there other reasons?
The main reason is probably the deadline for the initial submission of advance passenger information to the destination country. While this will vary depending on the destination country, having varying check-in deadlines depending on the destination country would be confusing, so it makes sense to apply the earliest deadline to all international flights.
Another factor that definitely does not apply to domestic flights is the inspection of departing checked baggage by the customs service.
There are many reasons.
I think the main one is the boarding time. On large aircraft you may get boarding time 45 minutes before departing, and on domestic flights it may just be 15 minutes before flight. Just that for international flight, it takes more time to board, and also it take times (and so high costs) if somebody will not board: the baggage of such passengers should be found and disembarked.
For some countries, it is about security check (e.g. flights to Israel) or additional time for further security checks (as it was done for flights to US).
Also because baggage handling take more time (there are much more baggage on international flights), and they are stored on own containers.
But also because international flights are often mixed flights: early they get the number of passengers and baggage, the better the airline can sell additional cargo.
Note: also refueling takes more time, and pilots requires exact cargo (and passenger) weight before to order fuel (and quantities are more sensible on long flights).
It is possible that international terminal is farther away, and as you guesses, there may be an additional exit check (e.g. exit from Schengen area).
Possibly there are also other reasons.