Я бы просто использовал LINQ to XML в Silverlight.
Единственное преимущество XmlReader по сравнению с LINQ состоит в том, что он не создает DOM в памяти, а перемещается по существующему потоку. Однако это различие действительно проявляется только в том случае, если вы можете начать обрабатывать поток по мере его поступления, а не ждать поступления всего содержимого. Это преимущество довольно трудно достичь и редко используется.
LINQ to XML намного проще для запросов и значительно более гибок в использовании, компромисс - некоторая дополнительная память.