We have a related table with a range domain and a field that allows null values. When a user tries to edit the field, a default value is already there that is not specified in either the field or the domain.
When you try to remove the value to replace it with null, it replaces the value with a zero.
What are the parameters of your range domain? Even though the field allows for null values, the range domain is probably trumping that allowance and demanding a value within the range domain. It seems that a null value should be allowed, but maybe it's a bug?
Test this out: If that "0" is coming from your lower range of "0", change the lower range to something else like "1". Publish a new feature service, make a new map, and open it in collector. If you try to enter null, does it reset it to "1" or "0"? If the answer is "0" then it's probably a bug, if it's "1" then the answer is that Collector respects the range domain over the allowance of null values.
The lower range was much lower than zero (-99). It worked fine in Android. Anyway, our work around was to get rid of the range domain.