While this is true, I'm not sure how constructive types don't face the very same issue. Ultimately, you will have to provide evidence for the required properties, with constructive types the proof is just (more or less) implicitly embedded into the datatype, which imo just makes dealing with these properties harder rather than easier.
In regards to the post by Hillel Wayne you've posted, I'm not sure what this statement
>This means that predicative data is easier to express at the cost of permitting representable invalid data. This is enough of a problem that we prefer constructive data whenever feasible.
is supposed to mean exactly. If your predicate makes some data invalid, it's just not representable in the refined type.