Good is bad, bad is good
In one aspect, it is good, but in another aspect, it becomes bad.
Bad in one aspect, is good in another aspect.
Entity has no change, the way you observe changed.
Good or bad is all depends on how you observe.
Shapefile :
starts 1990's, binary format, it is fundermental spatial format.
good: desktop application, processing efficent,
bad: exchange, transmition via internet, web application,
no web mapping platform currently direct support shapefile.
Geojson :
starts 2008, text format.
good: exchange, transmition via internet, web application,
all web mapping platform directly support geojson.
bad: desktop application, processing not efficient,
only default projection is EPSG: 4326, WGS1984, long, lat.
3D support:
Shapefile:
yes, x-coordinate and y-coordinate for 2D
use z-coordinate for 3D elevation.
for 4D time, use m-coordinate.
Geojson:
yes, see 1, 2, 3
Projection
Shapefile:
Yes, you can re-project at will.
Geojson:
No. only default projection is EPSG: 4326, WGS1984, long, lat.
Mix of different type of geometry
Shapefile:
No. You can not mix point line polygon in single shapefile.
All item must be homogeneous type.
good: easy processing, with relational attribute table, you can encode any model into it.
Homogeneous type reduce "Entropy"
Geojson: Yes. You can mix any point line polygon in single geojson file. All item can be heterogeneous type.
bad: heterogeneous type increase "Entropy" , make it hard to processing,
hard to encode relational attribute table,
hard to encode "any" model into it.
Shapefile is fundermental format, is the tree stem.
Geojson is one branch for internet, for web application. It improved shapefile in some aspect but has more weakness in other aspect.
Mapbox VectorTile is another branch to solve one problem that GeoJson has, but it solved one problem at the same time create more problem.
KML is a branch for internet, similar as geojson, but it support geometry styling, geojson do not support geometry styling. The drawback of KML is parsing XML in web application is much harder than parsing JSON. Geojson with JSON format beat KML.