This is a tracking issue for the comment at dotnet/coreclr#20935 (comment).
Throughout string, ROS<char>, and UnicodeScalar, we assume that the underlying globalization libraries only allow for simple case folding, not full case folding. In a simple folding system, the number of scalars will never change when performing a case conversion for any string value. Furthermore, case folding will never cause values to jump between the BMP and any supplementary plane. The end result of all of this is that UTF-16 strings will not change length when changing case.
Tarek's comment is that this might not be a safe assumption - that the underlying libraries might actually use full folding under the covers. We need to verify this one way or another so that we can update our internal logic accordingly.