TL;DR Promote abstractions through generalizations they come with.
Let me start with a digression...
Abstractions and generalizations
Abstractions and generalizations are two different things, but they commonly appear together. One funny way to think about them is to regard abstraction as a kind of weird existential quantifier, while generalization would be a universal one. To give an example, for a statement:
$$\text{Any group of order $3$ is cyclic.}$$
an abstraction could be
$$\text{There exists a prime number $p$ such that any group of order $p$ is cyclic.}$$
generalization only would be
$$\text{Any group of order $2$, $3$ or $5$ is cyclic.}$$
finally using both might give
$$\text{For any prime number $p$, any group of order $p$ is cyclic.}$$
While the "universal quantifier" in the last statement is apparent, it is not so obvious in the generalization-only example; but it is there:
$$\text{For any number $n \in \{2,3,5\}$, any group of order $n$ is cyclic.}$$
The takeaway is:
- Abstractions and generalizations may appear separately.
- But, the most useful setting is where there are both.
- "Natural" generalization (i.e. one which is handled uniformly, does not involve cases, etc.) implies some abstraction (perhaps stupid, but still).
- Non-trivial abstraction (i.e. which has more than one instance) imply some generalization (also, might be stupid).
Why to use abstractions
There are two main reasons to use abstractions:
- To blur out unnecessary details.
- To prepare for generalizations.
While the first one is more obvious, it is rare that students will approach problems of complexity so high that would warrant use of abstractions. Most of topics are usually given in small, digestible chunks, the abstractions being often already overlaid on the content. It seems a lost cause: either the problem would be easy enough to be able to keep track of all the details, or it would be so complex that the weaker students would be lost before it even started. There are cases like random variables where abstraction visibly makes things simpler, but is it necessary?
And here there comes the justification of that lengthy introduction. The easiest way to show why abstractions are useful, in my opinion, is through the generalizations they provide. In other words, it is impractical to use multiple different cases, and any proof that handles various objects in a uniform way has to use some form of abstraction. Fortunately there are accessible examples of this.
Examples of abstractions at work
The best example I know in computer science comes from this post by Dan Piponi. It is not an elementary problem, but I've used it several times to great effect. I recommend it very much!
Basic example in mathematics might be in calculating $$\int_{-\pi}^{\pi} \sin^3 t \cdot \cos t\ \mathrm{d}t.$$ One can do it by parts, but it's easier to abstract $\sin$ and $\cos$ as odd and even functions and conclude that the integral is zero almost immediately.
Similar example might be with proving that $(x-a)^3 + (x-b)^3 + (x-c)^3 = 0$ has only one real root by observing that $x \mapsto x^3$ is strictly increasing.
Induction is a great source of examples of generalizations. For example, to prove that $$4 \mid 5^{2014}-1$$ we generalize to $4 \mid 5^n - 1$ and argue by $5^{n+1} - 1 = 5\cdot (5^n-1) + 4$.
There is even a nicer example with covering the chessboard with L-shaped trominos, e.g. see here.
Information theory provides a general abstract approach by disregarding anything but the flow of bits. For example to prove that you need at least $5$ comparisons to sort $4$-element array it's best to calculate $\lceil\log_2(4!)\rceil = 5$, that is, any algorithm that distinguishes each of $4!$ permutations has to make at least $5$ decisions.
Yet another example might be calculating $S_n = \sum_{k=0}^{n} k\cdot 2^k$; the trick is to make $2$ a variable, i.e. $S'_n = \sum_{k=0}^{n} k\cdot z^k$ to get $S'_n = \frac{z(nz^{n+1}-(n+1)z^n+1)}{(z-1)^2}$ and go back to $S_n = 2(2^nn-2^n+1)$.
Let the final example be as follows: let $P : \mathbb{N} \to \mathbb{N}$ be a function constructed by combining $\mathrm{gcd}$, $\mathbb{lcm}$, constants and input, e.g. $$P_1(x) = \gcd\Big(\gcd(5,x),\mathrm{lcm}(x,3)\Big),$$ how to check if $P(x) = n$ has any solutions for some given $n \in \mathbb{N}$?
Observe that $\langle\mathbb{N},\gcd,\mathrm{lcm}\rangle$ is a lattice, and so it is enough to test whether $P(n) = n$.
Conclusion
Abstraction is a very practical thing, the problem is that in mathematics the complexity level in which it shines enough is to high for basic courses. For example, this threshold is much lower in computer science and being able to find good abstractions is widely considered a characteristic of a good programmer.
However, even in math one doesn't need to sacrifice practicality to talk about abstractions, because the generalizations they are tied with are enough powerful to warrant their (abstractions) use. Such examples might be a bit contrived, nevertheless, seem persuasive enough.
I hope this helps $\ddot\smile$