Doug101:
In the different examples I'm finding sometimes #include <SPI.h> is used and other times it's not.
You have libraries installed in a variety of folders. The compiler needs to be pointed to the specific folders that contain source code that needs to be compiled. When you compile a sketch the Arduino IDE searches through all your library folders to find the files in the #include directives and then passes those folders to the compiler. In Arduino IDE 1.6.5 and older it only did this dependency resolution process for #include directives in the sketch, not in libraries. The Ethernet library uses the SPI library. So with those old IDE versions if you wanted to use the Ethernet library you also needed to include SPI.h in your sketch, otherwise compilation would fail.
In Arduino IDE 1.6.6 the dependency resolution process was expanded to also scan #include directives in libraries included from the sketch (and libraries included from libraries) and so the #include directive for SPI.h is no longer necessary in any recent version of the Arduino IDE or the Arduino Web Editor. The directives are left in the examples for backwards compatibility.