System.Trigger behaves as a final static variable of an unknown, or anonymous, class, that resides in the System namespace, which itself behaves much like a static final variable of an anonymous class. Namespaces work like they do in C#, in that they can contain both members and classes, but without an explicit Type that can be referenced, as a class would be referenced.
As a more direct answer to your question, System.Trigger can only be accessed in a trigger context, as it is always null otherwise, and furthermore has a private setter, so writing a test method requires constructing the necessary records to call a DML operation on. You can't fake trigger context. At least, not with any method I've tried.
Unfortunately, the language has very little reflection available, and isn't open source, so the best you can get from an outside developer like myself is a reasonably vague answer.
I would speculate that many standard features of the language are written using special exceptions that would make them impossible to replicate in the current language syntax.
When practical, write your methods to accept plain lists or maps, and use trigger variables from triggers, and custom lists or maps in test methods. This delegates trigger syntax to only triggers, and test methods can operate independently of the trigger variables.