Lack implies that there is none there to start with; you're missing something. Short implies that they don't have enough. As for the example in your question, I would be much more inclined to say one has a "poor" vocabulary.
I agree that "poor" is the better adjective because it does not raise the need to explain lack or short. For myself, lack of vocabulary would be a total shortage and, more important, the inordinate use of shortcuts such as, "you know, you know" or as in the movie Marty, "You ain't a dog." Short would indicate that there is a limitation in many areas of speech or writing.