This is actually one of the problems with the idea of building maths purely on sets alone as foundations. If we take it strictly and formally, we get various statements which may or may not be true, subject to just how we have or have not constructed a particular object. For example, it gets even worse than what you are talking about: in a purely set-theoretic construction, natural numbers are sets, too, and thus we can ask whether, say,
$$1 \subseteq 3$$
and the answer to this is "it depends on your set-theoretic construction"!
For me, what I suggest is that this problem is very reminiscent of one often seen in computer programming: in computers, we have something similar going on in that everything we work with - pictures, sound, text, whatever - ultimately gets represented by the same "stuff": bits. And thus, if one does not have safeguards in place, one can try to interpret, say, the bits corresponding to text as a picture, or a picture as text, or conversely. Of course, what you get will be mostly scramble and nonsense, but you can do it, and the computer won't care.
So to deal with this, we need some way to encode that semantic information - that these two pieces of bits are semantically different - into the language in question.
And the way that is handled in computer programming is to use programming languages that require a data type, to discourage the programmer from arbitrarily mixing of different sets of bits that are meant to represent different things. Data typing attaches a semantic tag to each bit of data to say that it should represent a picture or text or a number, say, and then you cannot, in the same program, freely mix the two.
Likewise, this concept is not unheard of in maths - "type theory" explores a whole array of foundational systems and languages that use something very similar, and indeed both of these fields of application are closely related - but it's not the "standard consensus" foundation for maths.
But were we to use a typed foundation, I'd suggest the answer would best be thought of as a "no, but": the real numbers are not a subset of complex numbers, but we have the "type coercion" rule
$$x \mapsto (x, 0)$$
which allows us to "upgrade" a real number, should it be combined with a complex number in an expression, to a complex number. Such rules often feature in programming languages as I just mentioned, too. In general, they must be defined along with the types in question, but are typically based on whether or not "natural" correspondences of the kind you are perceiving here, exist.