There are a lot of proofs of this, but they all rely on a certain level of rigor about what a real number is - and that, it turns out, is a much more difficult question than it sounds like. You don't typically get a rigorous definition of the real numbers until well into a college-level math education.

-----

First, you're making a category error. "0.9999..." is a single value, not the sequence of values 0.9, 0.99, 0.999, 0.9999... Single values cannot "asymptotically approach" anything, any more than the value 2 or the value 7 can asymptotically approach anything. It's just a number like any other.

To show what value 0.9999... takes on, we need to do two things. First, we need to show that this notation makes sense as a description of a real number in the first place, and second, we need to show what that real number is (and it will happen to be 1).

-----

So, why is it a real number?

Well, remember what we mean by place value. 0.9 means "0 ones, 9 tenths[, and zero hundredths, thousandths, and so on]". 0.99 means "0 ones, 9 tenths, 9 hundredths, [and zero of everything else]". Another way to say this is that 0.9 is the value 0 * 1 + 9 * 0.1 [plus 0 times 0.01, 0.001, and so on], and that 0.99 is the value 0 * 1 + 9 * 0.1 + 9 * 0.01 + [0 of everything else].

What that means is that if 0.9999... means anything, it means 9 tenths, plus 9 hundredths, plus 9 thousandths, plus 9 ten-thousandths, plus 9 hundred-thousandths, and so on and so forth forever. In other words, 0.9999... is the value of an infinite sum: .9 + .09 + .009 + .0009 + ...

Infinite sums, in turn, are by definition the limit of a sequence. This is where that "asymptotic" thing comes back, but notice the distinction. 0.9999... is not the sequence, it is the LIMIT OF the sequence, which has a single value.

To show that it's a real number, then, we need to show that the limit of the sequence 0.9, 0.99, 0.999, 0.9999... does in fact exist. But this sequence is clearly increasing, and it is clearly not greater than 1, so we can (among other things) invoke the Monotone Convergence Theorem [1] to show that it must converge (i.e., the limit exists). Alternately, you can think back to your algebra 2 or calculus classes, and notice that this is the geometric series [2] given by sum 9 * 10^-n, and this series converges.

-----

Now, why is it equal to 1?

Well, there's a few ways to prove that, too. But the simplest, in my book, is this: given any two different real numbers x and y, I'm sure you would agree that there is a value z in between them (this is not a difficult thing to prove rigorously, provided you've done the hard work of defining the real numbers in the first place). The average of x and y will do. But we can flip that statement around: if there is NOT a value between two real numbers, those two real numbers MUST be equal.

In more symbolic terms, we claim that for all real numbers x and y such that x < y, there exists z such that x < z < y. So if there ISN'T such a z, then we must not have x < y in the first place. (This is the contrapositive [3], if you're not up on your formal logic.)

So consider the values of 0.9999... and 1. What value lies between them? Can you find one? As it turns out, no such value exists. If you pick any real number less than 1, your 0.99[some finite number of nines]9 sequence will eventually be bigger than it - and therefore, since the sequence is increasing, its limit must be bigger than that value too.

Since there are no numbers between 0.9999... and 1, they must be equal.

-----

[1] https://en.wikipedia.org/wiki/Monotone_convergence_theorem
[2] https://en.wikipedia.org/wiki/Geometric_series
[3] https://en.wikipedia.org/wiki/Contraposition