I do not see people asking this exact question, and yet I see a lot of questions that this would answer. Specifically, people with point data and location-based search use cases trying to use the spatial plugin, or trying to use a combination of the plugin and the built-in features. So I wanted to try to clarify the differences between the two:
Neo4j 3.0 introduced the
distance functions to Cypher, and Neo4j 3.4 enhanced this dramatically with the ability to store points as properties, and do index-backed searches using both range (and bounding box) as well as distance searches. If your use case involves point data (latitude and longitude, or just x and y), and you want to find data close to other points, or within specific regions, then it is best to use Neo4j 3.4. The support is built into the database through the entire stack. From the storage and indexing, through Cypher and even into the drivers and clients (browser and cypher-shell).
If you instead have complex GIS use cases, need to store complex geometries like Polygons and multi-polygons and need to import and perform GIS queries against the OpenStreetMap model, then the spatial plugin is the better choice. It has a much richer spatial feature set than Neo4j itself. However, keep in mind that this is a community maintained project, written back when Neo4j was primarily an embedded database. It was not designed for the high volume and high concurrency production environments that Neo4j is used for today. By all means, give it a try for your complex GIS case, but make sure you test if it is up to the challenge of your production use cases before relying on it too heavily.
So the short answer is, try Neo4j itself first. Only use the spatial plugin if you really need its richer capabilities.