Well it is not as if BSON has gone away, it is still actually there. The Meteor MongoDB driver section is built on top of the native node driver for MongoDB and that of course uses BSON to actually talk to MongoDB, and there is no other way since that is the language that MongoDB speaks, so to say.
AFAIK, the point of EJSON is to maintain the same sort of "type fidelity" that is inherent in BSON by it's binary definition when translating to clients that only understand JavaScript, and therefore JSON. So primarily browsers.
So as part of Meteor's goal is to make the difference between client and server side code somewhat transparent, it needs a mechanism to maintain this "type fidelity", for Dates
, ObjectId
etc, when transferring data to and from client and server.
So the difference of EJSON and JSON being, the JSON produced includes special keys that identifies these "types" so they can be properly processed that way, especially when talking to the server process.