I don't think it matters whether Unicode has ever expressed any preference for lowercasing versus uppercasing. What matters is that Unicode defines a case folding algorithm that happens to use lower case, and Stringprep simply uses it. Although Unicode defines both lowercasing and uppercasing operations, the only case folding operation it defines uses lower case, so we really have no choice unless we want to define our own case folding algorithm (which we don't).
(The case folding operation is designed for doing case-insensitive comparisons. The lowercasing operation is not.) AMC
