I think têm is more colloquial. Há (inf. haver) comes from late latin and means also to have but is more used in grammatical context (like I have learned) whereas têm (inf. ter) means more to posess and then people forgot the difference and used both for there is.
têm with circumflex is for when the subject is plural, like eles têm um cachorro. In the sense of to exist the use of tem is informal and in the singular form, as the formal variant haver, so it doesn't have circumflex.