I believe this is mostly due to NHibernate's java heritage.
See the FAQ entry on persistent collections. The specifically mention how Java contains more collections by default that C#, and they, in particular map to an ISet.
I believe the reason most samples use this is mainly just because this is more common in Java, and the samples were ported from Java. (Some of the samples use set without really needing it to be a set...)
That being said, there are distinct differences to a set vs. a list. The behavior is different, so there are use cases where a set's behavior is more appropriate. For lazy loading, this allows you to reduce the restriction on the order things are loaded, so you can potentially load less information and keep the interface contracts in place.