Strictly answering your question, plugins are loaded from the filesystem in this line. This applies to Q2A 1.8+. It uses the PHP glob function, which seems to rely on the operating system implementation to return sorted results. In my Debian Stretch they are returned in a case-sensitive alphabetical order and I guess that will be the same for most *nix-based operating systems.
It really took a lot of effort to move the logic from the old procedural way that was spread in global functions into a somewhat decently readable class that was also backwards compatible. So the way it is now is already quite good compared to v1.7.5. In fact, if you want a different sorting, you can tweak it right there, after that line.
Having said so, I agree on the plugin order issue. Although it is unlikely that two or more plugins require swapping the execution order... it can happen. Developers can take actions to make the code more compatible and decrease the chance for this to happen but still, this situation is possible.
The thing is that forcing alphabetical order on the plugin directories is a no-go. That is not user friendly, cannot be done without accessing the filesystem and, sometimes, it is impossible, as some plugins have a hardcoded directory path. As no plugin can know if it should be executed before or after the rest, I think the only way is for the user to configure the execution order based on the plugins they use: sorting them in the admin/plugins page manually.
And I've been trying to avoid plugin dependencies which might be quite related to this but let's leave that for another time :)