There are 2 questions one has to answer to determine the preposition or contraction in context of an information about place.
Of what kind is the location?
Is it an origin, a destination or a fixed location or in other words:
Are we talking about "to which location?" or about "at which location?"
There are 3 main groups of locations.
- Countries/regions/cities/districts that DON'T have an article (e.g. that are neuter
- locations that we enter (and countries that are female or masculine)... this is the biggest group
- "locations" that we don't enter... that are first and foremost persons but also brand-names like Burger King. But also places that we can enter can be used this way.
Then, there are some side groups like locations adverbs (4. rechts, links, etc), a fair number of exceptions (zuhause/Hause, Arbeit) and a fair number of locations that have their own system or work with various prepositions depending on what exactly you want to say (Markt, Meer, Strasse, Platz,...)
Each of the groups comes with it's own set of prepositions, one for each type of location. Sometimes 2 types of location share the same preposition. Then (and ONLY THEN) the case will tell us whether the location is an answer to "at what place?" or "to what place"
- aus Berlin, in Berlin, nach Berlin
- aus dem Kino , in dem Kino (Dat.), in das Kino (Acc.)... those are then often contracted
- von dir, bei dir, zu dir
- von links, links, nach links
With this we can now analyze the sentence in question. It is in because we usually can enter a theater and it is s because we are talking about "to what location?".
We could also say
Wir fahren zum Theater.
But now the result will be that we're at the theater, not inside of it. Maybe to pick someone up.
With hotel it is a little less literal. It just happened to be that way that people use "zum Hotel fahren" and "ins Theater".
Schule is even more extreme. It iss used with in and with zu and there is no real logic when to use which. It is just language in use... same as in English by the way
Sie geht noch zur Schule. (she is still in school)
Sie nicht gern in die Schule (she doesn't like going to school)
So... there are roughly 4 groups and there is a semantical difference between 2 of them (2 and 3). But you will always see exceptions, other combinations and situation where either one works.