What if the lowest granularity level can legitimately be null?
I agree.  Your business users would not like "AllOrders" and "SizedOrders" fact tables.  

I suggest creating a synthetic row in OrderDetailUnits for each OrderDetail where you have entries which are legitimately null.  I recommend populating *NotApplicable* or something like that for each dimension which is in the OrderDetailUnits.  

While not exactly parallel with what you're doing, I suggest reading up on Late Arrriving Dimensions to get some ideas.