
Control/customizability
The public cloud is a service offering, hence very little control can be achieved over what the company decides to use in their services (unless, you represent a significant chunk of their revenues).
The house analogy will hold good in this case as well. Consider trying to add an art piece to a hotel room. Chances are, unless you are the president of a large country, or a huge celebrity and willing to spend a fortune, the hotel room/suite will not be customizable.
The rental, might be a little more amenable to hanging an art piece. However, what about building a wall? That, your landlord may not agree with. However with your own house, you could build it anywhere you please.
One might ask, why would we need to customize? The answer is, for the most part we don't. However, if we need a certain hardware combination, then we will not be able to get that in the public cloud. While this might be bad coding practice (called snowflake—in short, creating unique solutions with dependencies), sometimes we can't escape it.