Personally, I don't have a problem with handling named entities/singletons this way. You could also retrieve the entity in the constructor, or eschew entities in this circumstance, passing to the constructor arbitrary data.
As for pitfalls, I can think of:
1) If the system is added before the named entity is added, you'll get a null reference. That's easy to diagnose and fix.
2) If the named entity is replaced for some reason, you'll still have a reference to the old entity and old components, leaving the system to operate on stale data. Solution: don't do that, never remove and recreate a named entity.
3) If the named entity is accidentally removed, the system will chug along as if the entity exists. Other systems that utilize this entity in a different manner (solution: be consistent) may fail and confuse you because, after all, the first system is still working.
None of these are particularly scary to me. :)