I am using Arduino Uno R3 to I2C communication between BMP280 and MPU6050. However, the operating voltage of the BMP280 is 3.3V, but the I2C communication terminal was just connected and used. In the meantime, I saw an article saying that communicating a 3.3V device with 5V can shorten the lifespan. So I measured the voltage of the communication terminal. But surprisingly, both SDA and SCL were operating at 3.3V! When only BMP280 is connected to Arduino, it is 3.6V, and when MPU6050 is connected, it becomes 3.3V. 5V is measured when nothing is connected. I have a hard time understanding this amazing phenomenon. Why is this happening? And in this situation, are the sensors safe even if I don't install a level shifter?
SCL and SDA are "open collector" lines which require pullup resistors for HIGH state. In your case these resistors seem to sit on the BMP and MPU and connect to their 3.3V operating voltage.
So far you don't risk to damage the 3.3V modules but in case of communication problems you may need a level shifter between 3.3V and the 5V signal level expected by the Uno.
There seems to be no pull-up resistor in the wiring diagram of the Arduino Uno. But, 5V is measured when nothing is connected. Is it built into the ATmega328P? If an externally supplied pull-up resistor exists, is the internal pull-up disabled?
The 5V may come from the built-in pullup resistors. These resistors are much higher (20-50k) and are overridden by the external (4k7-10k) pullups.
Some controller boards (Mega...) include their own pullups at the SCL and SDA lines but not on boards where the I2C lines also can be used as analog inputs (Uno: A4/5).