It's perfectly fine to use the items. The problem is when you call Items.Add(), Items has wrapped sc. In effect, you're calling sc.Add(). Your code is depending upon the set accessor for Items, which will only be called if you try to assign a reference to Items. That's why I said "richListBox1.Items = anotherSc" would work.
I think to accomplish this task you willneed to derive from string collection so you can raise an event when .Add is called. Because I'm sure you don't want to exposethat much informationto the outside world, I recommend deriving from List<string> internally and exposing Items as ICollection<string>.
property ICollection<string> Items{get;set;}