I hereby propose a type analogous to JobPosting called "RealEstateListing". We do this sometimes (see also FAQPage), by having a type that groups together a common bundle of information. In the real estate case, this will give us a natural place for information about the listing itself rather than about the offer and the property being offered.
In looking at real estate it has also become clear that there is a widespread assumption that most offers are offers whose businessFunction is "Sell". While we encourage this view in the specification for https://schema.org/businessFunction ("The business function (e.g. sell, lease, repair, dispose) of the offer or component of a bundle (TypeAndQuantityNode). The default is http://purl.org/goodrelations/v1#Sell.") but it is awkward to depend heavily on defaults in any RDF-like language. I propose we explore introduction of subtypes of Offer for common business functions, at least SellOffer, BuyOffer and LeaseOffer. This is also much simpler in markup terms.