Is there a canonical way for a plugin to install a mu-plugin or drop-in?

There are no canonical methods for doing this, and in many cases it’s undesirable. E.g. more than one plugin may want to override a drop in. You might also be reaching into and modifying files that are managed by the hosting company, which might either break things or trigger problems.

Instead, you should disable any functionality that requires your drop-ins if they aren’t installed, and notify the user that they are required and how to set them up.

If you did want to automate it, I’d do it by providing it behind a button the user can press, but there is no official mechanism for implementing this. Generally the attitude is that if you can do it without a drop-in, you should. Since there is no alternatives to drop-ins for some tasks, they haven’t been deprecated and still persist to this day.

You mention cribbing off of Query Monitor, I would consider that plugin a good example of what to do. It provides notices to the user that the db.php dropin is missing, as well as instructions on how to install it correctly, and CLI subcommands to automate the process.