When you declare a nested class, you are in essence saying that the nested class is a member of the containing class. That is: B is a member of A, and class B cannot exist outside of the scope of class A.
In other words, by nesting the classes you are stating that B should not exist outside of A's scope. Unlike a namespace, you cannot declare an object of type B. You can only declare an object of type A.B, since A's existence is required for B to exist. So while there is no inheritance, there is a direct dependence.
Additionally, as outlined in the specification in the Nested Types section, nested types have access to all of the container class's methods.
10.2.6.5 Access to private and protected members of the containing type
A nested type has access to all
of the members that are accessible to
its containing type, including members
of the containing type that have
private and protected declared
accessibility.
So B can contain references to A that are private/protected, meaning B cannot be fully resolved and created unless A can be fully resolved and created, and if A depends on B you end up in a strange loop. So while it is not explicit, it is strongly implied that A cannot inherit from B due to this relationship.
If A could be derived from B, then A's definition would be recursive and the compiler might never be able to finish resolving A. While there might be ways to allow these sorts of constructs, they have been explicitly disallowed in C#.