I'll try to take on this too:
1) Whoever feels like it. Usually it is the DB vendor, but there certainly are some open source JDBC drivers available. For example, the jTDS driver once was (and perhaps still is) more popular than the Microsoft's own driver for conncting to the SQL Server.
2) The database generally cannot distinguish driver types (unless this information is part of the protocol the driver uses to talk to the database). As there is usually a network connection between the DB and the JDBC driver, the database just sees a stream of data - adhering to some network protocol - created and sent by the driver over the network. It is generally impossible to deduce, just from this stream of data, who is at the other end of the connection.
(The ODBC bridge is actually Type 1 driver. Driver types are described
on the Wikipedia, for example. Not that the type numbers would be that important - everyone says "ODBC driver" instead of "type 1 driver".)
3) The JDBC specification does not include a way of getting this information, so in general - no. You
might want to be able to distinguish this if various types of drivers supported different feature sets. This is partially true for Oracle drivers, for example: an OCI driver ("type 2") supports a few advanced (and rarely used) features the thin driver does not. I believe it is possible to tell these drivers apart somehow, but in any case it would be Oracle specific feature of the driver.