"I could repeat the problem and realized that it has to do with one of
the undocumented constraints of the solver-API. More specificly, it
has to do with preprocessing. If you turn that off it gives consistent
results: both turning on the literal as an assumption or as a unit
clause gives an unsatisfiable result.

The cause of this problem is that when you call solve the first time
you specify that the preprocessing should be turned off at the end of
the call. This means that all data-structures that has to do with
preprocessing are deleted, and it is no longer possible to refer to
any of the variables that may have been removed by the preprocessor.
In this case the literal you pass as an assumption was indeed removed.

The way to work around this is to either use preprocessing throughout,
by replacing all calls of the form "solve(xxx, true, true)" with calls
to "solve(xxx)", or to initially turn off all preprocessing, which can
be done with a call to "eliminate(true)" before anything else.

Which alternative works best depends on your application, but as
preprocessing can be pretty unpredictable in some incremental settings
your best bet may be to turn it off.