The short answer is because
$secondary etc are injected in by Discourse while the more complex variables are not.
And so, you’re correct, you’d have to import them first.
The long answer is here:
No, it’s not an overkill because they will not be a part of the compiled CSS sheet sent to the client.