There is no obsession. Firstly, many small vendors do not have POS machines with NFC (tap to pay). Many do not have POS machines at all, only big vendors do, as you observed too. Now people may want to use a single universal payment method - for big or small vendors. Let's say you go to a small shop, then visit a mall, then some fancy restaurant, then again some small shop. You have to think which payment method to use as you can't use Visa/Mastercard cards at small shops. BharatQR which was developed by Visa and Mastercard in collaboration with NPCI to pay via credit cards is a failure. BharatQR was hardly adopted and small shops don't have POS machines with NFC readers. Heck even those merchants who have POS machines are unaware of NFC, they are trying to swipe the card or insert it in the POS machine instead of tap to pay.
From merchants' point of view, a QR code is free and hardly any cost. Plus there's MDR to be concerned about. You can't buy dhania from a street vendor with Amex or milk from a small shop with Amex, can you, but they are starting to have QR codes. Many people prefer convenience and not having to think over all else.
Another possible reason: most people don't have credit cards and they have these myth that credit cards are bad. They just don't like them. Many people aren't aware credit and debit Visa/Mastercard cards can be tokenized in Google Pay, CRED, Paytm, Samsung Pay so carrying the actual card isn't necessary. You can tap to pay with just your phone, even the app doesn't need to be open, the default tap-to-pay app automatically opens and pays but they don't know that.
OK those who have credit cards, yet another reason: a huge number of Chinese budget phones (but not Korean Samsung) omit NFC entirely in Indian market for some insane reason (but have NFC in their models sold in China) so then carrying the right physical card for the right merchant becomes important.
Another potential reason: do you know many merchants don't want to spend the effort to enter the amount on the POS machine? They will prepare or print a paper bill and tell the amount to pay and they are happy and trust the customer enough to let them enter the amount to pay, and simply hear the audio notification that it was paid. It saves them effort for hundreds of thousands of customers in a day to avoid entering amount to bill, plus the Paytm soundbox or equivalent makes their job easier. UPI has made lives easier for merchants too.
Now, personally I love credit cards and can see how rewarding they can be. I have tokenized my CCs in GPay, CRED, Paytm (got a phone with NFC specifically for that) and prefer tap to pay if NFC/contactless POS machine available, otherwise RuPay CC via UPI (NeuCard Infinity), otherwise if BharatQR available (Bharat QR is different from UPI QR and very rare to find), can even scan BharatQR and pay via Visa/Mastercard credit cards which is what I do at my everyday snacks, grocery and fresh food shop which happens to have BharatQR (but not a POS machine!). It is such a busy crowded shop that they have no time to enter the amount to bill for the customer, they want customer to enter it via QR code scan & pay and then they are content with hearing the audio confirmation (lately they got an Amitabh Bachchan voice thanks to PhonePe) and move on to next customer.
Now UPI can be linked to RuPay credit cards and BharatQR allows payment via Visa/Mastercards too. I think people don't prefer UPI as such, they prefer scan QR to enter amount and pay and both the merchant and customer hear amount paid vs merchant entering amount to be billed, and then customer tapping the phone or card. The recent explosion in banks giving away RuPay credit cards which can be linked to UPI may be because banks realized the way in which customers prefer to pay, regardless of whether it is backed by a bank account or a credit facility and that is - Scan QR which works universally vs tap to pay which only works in merchant stores which can afford and have the desire to operate POS machines.