Well, because in C, the language ZScript is based off of, we do this:

Code:
mystruct foo; //doesn't really matter what this is, exactly

foo.x = 1; //set the x member of foo to 1

mystruct* fooptr = &foo; //take a pointer to foo. Remember: fooptr == foo

printf("foo.x: %d", fooptr->x); //prints "foo.x: 1"
With a normal struct (UDT, class, whatever), you get to use the dot operator, like in BASIC and other languages. However, when you add a pointer into the mix, then you need to tell the computer "I want to deal with the object being pointed at, not the pointer itself". So, you get to use the dereferencing operator instead.