Answer
Update 2019dec25hkt2235
I have tested a 0.9" SSD1306 OLED and found "i2cdetect -y 1" can detect the device address 0x3c without any problem. So I guess there are two possibilities:
(1) The OLED modules you bought are bad. You might like to buy or borrow more samples to test again.
(2) Your Rpi buster is not properly configured. As I suggested, you should used another I2C device to make sure your config and i2cdetect -y 1 can indeed detect an I2C device.
I have summarized my test results below. You may like to use similar config and try again (See Appendix B for more details).
Discussion
Ah, let me see. It is true that 3V3 SMD/through hole ICs/chips should be powered by 3V3.
However, most 3V3 chips with breakouts or in the form of modules are almost always designed to be powered by 5V0 for two reasons:
(1) To make breakout/module compatible to both
(a) [3V3/5V0 powered Arduino with 3V3/5V0 GPIO/logic] AND
(b) [5V0 powered Rpi with 3V3 GPIO/logic],
(2) The breakout/module usually uses a LDO (Low Drop Out) regulator to step down 5V0 to 3V3 which is now more precise, regulated, and stable than directly feeding with 3V3 source which might be too low, noisy, poorly regulated (because overload with other devices, long thin cables, etc).
To play safe, I almost always look closely at the PCB for the 3 leg LDO guy (marked 562K below). Errata 2019dec24 - 565K should read 662
K, See Appendix for datasheet.
My suggestion: Go ahead with 5V0.
Warning: No guarantee no nothing would melt down or blow up.
PS1 - To troubleshoot, you can try any other I2C devices to i2cdetect -y 1 again, to make sure that your Rpi + I2C driver/software etc are updated/upgraded, correctly setup and enabled, and working. Good luck and cheers.
PS2 - The module shows three 4k7s which should be the I2C pullups. There is no need to add your own pullup in this case. On the other hand, if LATER you add more I2C devices and detection is no longer stable, you might consider removing the 4k7 pullups, because Rpi I2C pins already have 1k7 pull ups which are strong enough to do the pull up/down job. (Too many 4k7s in parallel would result a too strong (much lower than even 1k equivalent resistance.) Rpi I2C pins then need to pull harder (Ohm's Law! :))and therefore Rpi would age faster or die sooner. [Pull down current of 3V/1k7 is much smaller than 3V/1k.]
References
(1) How to connect Raspberry Pi 4 to sparkfun SSD1306 / SSD1309 OLED transparent display?
(2) AliExpress SSD1306 / SSD1309 OLED Catalog
(3) Solomon Systech SSD1306 LCD Controller Catalog
(4) Solomon Systech SSD1306 LCD Controller Datasheet
(5) Velleman SH1106 Datasheet
(6) AliExpress SH1106 Module Catalolg
(7) TaoBao SH1106 1.3" OLED Module
(8) TaoBao SH1106 0.9" OLED Module
(9) Luma.OLED: Display drivers for SSD1306 / SSD1309 / SSD1322 / SSD1325 / SSD1327 / SSD1331 / SSD1351 / SH1106
(10) Luma.OLED API Doc for SSD1306, SSD1309, SSD1322, SSD1325, SSD1327, SSD1331, SSD1351 and SH1106API OLED
(11) Rpi: Control I2C SSD1306 OLED 128 × 64 display Python - Sebastian, indibit.de 2018apr16
Appendices
Appendix A - LDO
XC6206P332MR (662K) 3.3V, 0.3A, SOT3-3 Low Dropout Datasheet - SunRom
XC6206P332MR (662K) 3.3V 200mA Positive Fixed LDO Voltage Regulator in SOT-23 package - Rs9
Used in sensor modules where input voltage can be 3.3V or 5V and
output will be fixed 3V to sensor IC. So if user inputs 3.3V the
output is 3V due to low drop out voltage of this IC. When you input 5V
the output is 3.3V. This IC is excellent where you want to design
modules compitable with various input voltages.
Appendix B - How to edit config.txt to make it as simple as possible to detect SSD1306 OLED
(1) How to set up and use your brand-new Raspberry Pi - Alex Bate, rpi.org 2019dec25
Many Rpi terminal window commands giving you the power to have more control over your system, ...
(2) 50 Useful Raspberry Pi Commands – A Beginner’s Guide - Parijat Dutta 2019dec23
Basic commands to backup and edit /boot/config.txt: cd, ls, cp, nano, cat, mv, rm, ...
Example to edit config.txt
(1) cd /boot [change directory to /boot to find config.txt]
(2) ls - l [list files in directory]
(3) cp config.txt configtest01.txt [copy a working copy of original
copy of config.txt]
(4) mv config.txt configoriginal.txt [rename original copy as a
backup]
(5) sudo nano configtest01.txt [edit working copy of config.txt]
(6) cat configtest01.txt [check contents of edited work copy]
(7) rm config.txt [remove current config.txt IMPORTANT: killing
current config.txt!!!]
(8) sudo reboot now [must reboot to use new version of config.txt]
(9) i2cdetect -y 1 [hopefully to find OLED at 0x3c]
(10) It is important to do sudo apt-get update and upgrade before
i2cdetect. And from time to time the most recent upgrade might have
teething problems, and often full upgrade can solve the problem, as
summarized below.
#!/bin/bash
sudo apt-get update
sudo apt-get full-upgrade -y
sudo apt-get autoremove -y
sudo reboot now
Warning: Try at your own risk. No guarantee no nothing won't melt down or blow up!!!
Appendix C - Hello World Program
(11) Rpi: Control I2C SSD1306 OLED 128 × 64 display Python - Sebastian, indibit.de 2018apr16