If you have 2 accounts in bitcoin core, the default account and a new account named "A", and you have 2 BTC in default account but 5BTC in account B.
If you use the sendtoaddress command to send any amount of bitcoin, it will always debit the default account whether it has a balance or not.
For example if you send 3 BTC using the sendtoaddress command and the default account has 2 BTC balance, the transaction will succeed because Core will choose coins from the other account that has funds
No!
This is the type of confusion that happens when people try to use the accounting system in Bitcoin Core instead of implementing their own accounting system.
Bitcoin Core will just as likely choose to use bitcoins that were previously received at an account that currently has a 0 (or even negative) balance.
Think about this like a bank.
Imagine you deposit $200 into YOUR ACCOUNT at the bank, and I deposit $500 into MY ACCOUNT at the same bank. Now imagine that I return the next day and withdraw $200 from MY ACCOUNT. Am I going to get those exact same bills from the bank that I gave them? No. The bank mixes the bills all up internally and stores them all together in a vault without any indication as to which bills were deposited into which account. The account is just a number that is updated when the deposit is made. After that, the actual money has NO CONNECTION to the account at all. When I withdraw $200, I might get some of my original bills, I might get some of your original bills. It doesn't matter. Regardless of which bills I get, MY ACCOUNT will be reduced by the amount that I withdraw.
Bitcoin Core accounts work the same way. When you "receive at an account" the account value is increased, but the bitcoins are not in any way tied to that account. When you "send from account", the account value is decreased, but the bitcoins themselves just come from the total bitcoins under the control of the wallet. Some of the bitcoins sent MIGHT be the same bitcoins that were received at that account, some of the bitcoins sent MIGHT have been received at other accounts. It doesn't matter. Regardless of which actual bitcoins are sent, the account that is being "sent from" will be reduced by the amount sent.
but still debit the default account so the new balance for the default account will be -1 BTC.
Non-default accounts are also allowed to have a negative balance.