Items will grow to several thousand or more so I'm going to lean away from using pairings.
I'm leaning towards the first method of using a text field to store a massive array of items. The way other stuff works I need to hit the user for some data on each page view anyways.
I'm also going to reverse the marked or not marked algorithm. Only unread items are in the list. This way users that keep up have less overhead and the data doesn't grow huge as the number of items grows.
I will have the overhead of having to update user records when a new item is inserted but there may be a reason for me to be doing so anyways. I just hope the text fields doesn't grow ungodly large.
This seems to make th emost sense to me.