I had a long discussion about this with some mates recently, we came to the conclusion that self-confident people are able to be humble, but insecure people tend towards arrogance.
If someone's happy with themselves generally, they can be happy to admit where they fall short or where others are better. But if they're insecure about where they fall short, they can cling onto and shout about those areas which they think are their strongest points.
Elite athletes in certain sports can be a bit of a special case, where some need to inflate their confidence in their skills to a point where they appear arrogant, especially if their way of staying motivated is to make outrageous claims in public and then have to back them up, e.g Shaun Palmer.