I model preferences as utility functions, where there is an individually-variable trade-off between independence, and avoiding economic damage. Thus for each individual the three options can be ranked (I add a small random component, to avoid determinism). Whether they prefer no-deal or remain will be fixed for each individual, but how they respond to a deal that is intermediate between the two depends on the characteristics of the deal and their personal preferences.

Let’s visualise it. Assuming the population is evenly divided in how strongly they favour independence versus avoiding damage, and with a deal which is 50% on each dimension:

Voters are ordered from eurosceptic to europhile on the x-axis, and the dots are their “utilities” of the three outcomes. The lines locally average these utilities. The more eurosceptic voters favour no-deal, the europhiles favour remain, but a large segment in the middle favour the compromise deal. (The actual values of the utilities do not matter so much as the ordering they generate for each individual.)

If we make the deal less attractive, so that it yields less independence and does more damage, it is less popular. Indeed, it is only the most popular option for a small band in the middle.

If the population is not evenly distributed, the story changes accordingly. Assume a strong eurosceptic skew:

No deal looks like it might have an absolute majority in this graph, with relatively few favouring either the deal or remain. We can skew the population in the other direction with symmetric results.

If the characteristics of the deal are skewed, for instance, offering lots of independence but also lots of damage, its popularity will be skewed.

Here it does quite well, popular with the eurosceptics and competing strongly with no-deal.