To an American ear, it sounds awkward, but in British English, this is not uncommon. Ironically, a Brit will probably tell you that the correct form is "I have got a small dog".
This is definitely an American English/British English thing, as you can't do it in American English but you can in British English.
In American English, you can't contract "have" if you are using it as a plain (not a "helping" or "auxiliary") verb. "I've a dog" and "They've a great time" are not grammatical in American English.
There are a number of other restrictions on contractions of "have" besides the one you cite. For example, you can't use contracted "have" followed by "not": "I've not been there" is not grammatical in American English even though "I've been there" is—if you want to contract, you have to say "I haven't been there".
I discussed this in a question about I’ven’t.
I'm not certain on the applicable uses of they've and am hoping to find its limitations.
I think it sounds fine here, but typically, you only use the contracted form when the have is acting as a helping verb. For example:
-They've spent the past five days here.
-They've got plans for the weekend.
-They've not done the assignment yet.
Notice in these examples, the have that's part of they've is not the entire verb, whereas it is in your example.
Like I said, it sound fine in your example, but it might cause confusion or sound awkward in some scenarios. For example:
-They've lights.
-They've the ball.
-They've three kids.
These sound awkward to me as a native speaker, so you want to be careful with using they've this way.
It's technically correct; however, it sounds awkward.
"They have enough lights to spare one.", is a much better choice of words.