It's a combination of Historical/Evolutionary and Market force reasons
While working at Microsoft some years ago, it was clear that there was several different data offerings in development. Each of the offerings were aimed at a particular market or use case, e.g.:
Access was aimed at desktop users comfortable with card indexing systems who could build up applications using the forms and reports. SQL was a natural addition. This all used its' own local-machine database engine named 'JET'. Eventually JET was sidelined - the word on the grape vine was that lack of (reliable) source control meant they'd lost a large chunk of the source.
FoxPro was aimed at desktop users who wanted speed over relational data.
SQL Server was the Enterprise/Server-side 'big' database system with all the scale/power/availability, etc that enterprises need. IIRC, MS licensed a version of Sybase 6 upon which to build MSSQL.
Over time, some of the boundaries have become blurred - e.g. SQL Server can run on a desktop machine now, but the use case remained.
So this gives us 3 'back ends' - database products produced by Microsoft.
To add to the mix, there was then different levels of developer API provided to gain access to these systems:
Initially, there wasn't much in the way of APIs - you wrote your code inside the application (FoxPro/Access). VBA was one method.
Microsoft implemented MS ODBC in order to connect to competing systems so that Windows could talk to big databases like Oracle, Sybase, etc. Excel was one of the notable apps to get ODBC tools - pull data from your big DB, manipulate it and product charts/graphs, etc. Many database vendors ended up implementing ODBC to allow disparate clients to connect, so this strategy was successful.. to a degree - ODBC could be considered as representing the lowest common denominator.
Different teams started to produce their own ways to access a database engine like DAO (Data Access Objects) for local and RDO (Remote Data Objects) for remote, accessible through VB, which was the most popular MS developer product at the time.
An internal effort to rationalize these diverse APIs and provide a single/unified highly flexible database access API gave us OLEDB, but it was very very hard to get into (lots of C++ templates).
OLEDB couldn't be used from VB, so ADO was developed using ActiveX techniques, so it became re-usable by anything that could do COM/OLE/ActiveX, meaning Access, Excel, VB and hence ASP became database-enabled.
As we moved into the .NET era, ADO was naturally moved into a .NET environment which brought various benefits.
With the advent of LINQ, the actual database access mechanism became less of an issue.
Caveat - I left some time ago now, so my memory is a little fuzzy