`“Embedded document” and “subdocument” are used interchangeably, and you’ll also see references like “embedded subdocument” and “nested document”. Preferred naming conventions also depend on context (for example, language drivers or ODMs can be influenced by the author or phrases that are more idiomatic for a language community).
As @steevej illustrated, many object-oriented programming languages use Object as a primitive type that is extended with additional properties, and have class definitions as a template for creation of objects. Structured data without an associated class will be typed as an Object; data with a class will ultimately inherit from Object or an equivalent primitive class.
The document nomenclature comes from data modelling and thinking about the shape and relationship of data. Embedded documents represent relationships (1:1 or 1:many) that are candidates for normalisation if you are designing a data model optimised for storage efficiency (or tabular data limitations) rather than application efficiency. Optimal MongoDB data models will support how data is commonly used by your application, which includes choices like appropriately modelling relationships with linking versus embedding.
I don’t have a strong preference for using “embedded document” vs “subdocument”, but I do think of these as referring to the shape of data as compared to “objects” which may include additional functional hooks and attributes.
For example, Mongoose follows an Object-Document Mapper (ODM) pattern where your code interacts with Mongoose objects that represent MongoDB documents (the data actually stored in your MongoDB deployment). Mongoose objects have associated middleware functions and virtual properties that are not part of the database representation. Mongoose also has some specific schema treatment for Subdocuments versus Nested Paths: both are stored identically in MongoDB so this a Mongoose-specific difference.