K
The main way that OTPs are weaker than regular passwords is that they need to be made available to the user through some method, before the user has authenticated. There are a few ways to do this, with widely varying security. For example, SMS is very weak - it's considered weak even for a second factor, so using is the only factor is extremely poor security - because it's relatively easy to intercept, re-route, or access on a stolen device (lots of phones configured to display SMS even on the lock screen). On the other hand, an OTP from a hardware device or phone app (could be HOTP or TOTP, the latter better known as the algorithm Google Authenticator uses) is generally pretty safe (though still weaker, if used alone, than almost any two-factor approach).
OTPs are also often weaker than traditional passwords in that their maximum entropy is much lower, and they're easy to enumerate. Typical six-digit OTPs have a million possibilities, or roughly 20 bits of entropy. That's as much as a decent but not great password. The odds of anybody successfully guessing it are generally low enough to not worry about, but it's well within the range that a large botnet could brute-force trivially if you don't have protections against such threats. On the other hand, if you allow the user to request OTPs (e.g. for delivery by SMS or email), and each request delivers a new OTP (because you're hashing them in the DB, to reduce the risk of them being exposed while still valid), then the attacker could make their job a lot easier. Suppose they are able to get 1000 OTPs valid at once for a given user; then they have a 1/1000 chance of guessing right, and that's doable with a single Internet connection and at most a few minutes. There are ways to protect against this, of course - rate-limit requesting new OTPs, disable existing OTPs when a new one is requested, deactivate all OTPs for a given user if there are some small number of wrong guesses, monitor for things that look like brute-force attacks and block them possibly by disabling the targeted user account - but these all have their own threats as well (usually that an attacker can prevent another user from logging in, though this threat also exists for traditional passwords).
It should be noted that your two threats miss the biggest threats BY FAR: phishing and credential stuffing. In terms of real-world compromises, phishing almost certainly causes the greatest monetary losses to businesses and probably also individuals, but credential stuffing (reusing a compromised password from site X to log in as the user on site Y) is also common. (You might argue that a "user with proper password management" precludes password reuse, but in the real world people reuse passwords constantly, often even if they also use a password manager, and if you're choosing the auth systems to support, you have to take real-world user behavior into consideration.)
OTPs eliminate the credential stuffing attack, and in that way are a substantial improvement over traditional passwords. However, they don't help against phishing; if the user expects to be entering an OTP, and they get an OTP, they will enter it (even if the site they enter it into is actually an attacker's phishing page). If the session is short-lived and requires a new OTP to log in again once it expires, that that limits the damage possible from a single phishing success, but usually sessions can be long-lived after you've authenticated once, and even short-lived access can do a lot of damage.