You can think about causality in terms of intervention. If you make an intervention that changes only the price of an apartment (e.g. you subsidize it), will the size of the apartment change because of that? Obviously not. If you make an intervention that changes only the size of the apartment (and leaves all other mechanisms as they are), will the price of the apartment change? Most likely it will.
Nice puzzle. Keep in mind that OP is not interested in finding all causes (like the availability of concrete or the size of the rooms), only in checking the causal link between two observed variables. I think the solution is this: to check if there is a causal link from price to size, you need to make an intervention on the price, not on the buyer. (Unless you are sure your manipulation of the buyer can affect the size only through its effect on the price.) The (price, size) dataset in the paper is from a website for students who look for an apartment. Your manipulated student who is suddenly willing to pay more will probably rent a larger apartment, maybe even cause a new large apartment to be built and prices may shift a tiny bit. But you largely failed to manipulate of the price of a particular data point. The apartment that your student would have rented is still in the data set and its price is still largely influenced by the number of rooms, and the chance that it has gotten a room added is so tiny that it won't register in the data. (The causal link is there, I agree, but it's as weak as a butterfly.)