All three kind of describes the same thing about John, but "short" is the most specific.
"John is short" describes John's height.
"John is small" also describes John, but it could mean that John is short or that John is skinny. It should be used more to describe objects or animals. "The cat is small. The ball is small"
"John is little" also describes John's feature but it could also tell his age. Some people may say "John is little" instead of "John is a little boy" to mean that John is still young.
I think that "John is short" is the most grammatically correct.