"->" vs "." to access class members?

jwllorens:
Why are instances of a class often created with the "new" keyword, creating a pointer to that instance, and then non-pointer members of that class instance dereferenced using "->" in most Arduino sketches that I see?

Are you asking why you need to use the '->' operator, or are you asking why the class is dynamically instantiated?

jwllorens:
Is there a reason to use the above code instead of the following?

Oh. Well, the usual reason for using dynamic allocation of objects is when you only know at run-time how many objects you will need or how they will be initialised. Or if that changes over the lifetime of the sketch (for whatever reason).

For instance, if a sketch has to ask a user how many thingies they want to work with, you can do this either by statically allocating as many thingies as any user is ever going to want and only using some of them, or you can do it by dynamically allocating them with new at the time when you find out how many you will need.

Another example might be some sort of model train system where a person might put carriages down on the track and remove them, and the sketch detects this and uses object instances to manage carriages and trains of carriages as time goes on.

jwllorens:
And one final question. In a struct (not a struct class, but a struct as in a structure with no member functions) I can create several instances at the outset as an array. Can I do the same with a class?

Yes. And you wouldn't have needed to ask this question if you had just written a little test sketch to try it out.