Accessibility is not the only thing. There's also scope and context.
A class variable (or static member as they are called in many languages) is tied to a particular domain. It should make sense to make it a member of that class because it is meaningful in the context of that class.
Example: class Cat may have a static member count
that keeps the number of Cat instances at any particular time. You could instead have a global variable catCount
but that would be less OO. Obviously the number of Cat instances is closely related to the Cat class, hence it makes sense to make it a Cat class member. This also narrows the scope of the variable to the class members of Cat (you must type Cat.
first for it to become available). Tight scope is always a good thing, a global variable catCount
would be meaningless outside the scope of the Cat class and thus noisy.