this means, “The encoding output have to have SDR properties”?
Essentially, but while encoding output needs similar sparsity for different inputs, 20% active is totally fine. But the SP produces SDRs in the more strict sense, where you need something like <5% active. It’s a bit of a subtle difference but relevant in practice.
if they both produce SDRs why not combine them into a single thing…
They have very different purposes. The encoding step takes some very specific type of real value (non-binary-vector) and has to convert it into a binary vector to enable the rest of the algorithm components to understand it. It must produce SDR-like representations, albeit with less of a sparsity constraint.
The SP is a very general and powerful tool for creating representations that capture generalization and specificity and adjust through learning to better represent commonly seen elements. It also has to enforce a relative level of sparsity that may not occur in the inputs if they come from a more dense encoder or from a union representation.
In short, encoders are an algorithmic boostrapping step that is very specific to the input data types and the particular application while the SP is a very general algorithm that is potentially used many times in a network.