They are all right, it is all those things together (mandatory, might be the case, no need) 
A level shifter can connect the voltage levels of SDA and SCL of a 5V I2C bus to a 3.3V I2C bus. Since data on the I2C bus is going in both directions, the level shifter makes a 5V signal from a 3.3V signal and a 3.3V signal from a 5V signal.
This BME280 has a voltage regulator for VCC and level shifters for SDA and SCL: 【SIMPLE ROBOT】3In1 BME280 GY BME280 Digital Sensor SPI I2C Humidity Temperature and Barometric Pressure Sensor Module 1.8 5V DC |spi i2c|spi sensormodule dc - AliExpress. That makes it fully compatible with 3.3V and 5V.
When your Arduino Nano is powered with an external power supply, it runs at 5.0V, and you are operating outside the datasheet specifications when using the BMP280. That is not very bad, but you might get into troubles later.
When you power your Arduino Nano with a USB cable, it runs at 4.5V, and you are (barely) within the specifications.
On the other hand, the BMP280 and BME280 are very sensitive for high voltages at the SDA and SCL pins. The Wire library enables the internal pullup resistors, and that raises the SDA and SCL voltage levels.
If you have connected the 5V accidently to the VCC of your BMP280 module, the BMP280 is probably already broken (if your module is like the picture in the link you gave, that picture does not match the description below it).
If you want to keep the sensor happy, use a level shifter.
If you want to avoid troubles in the future, use a level shifter.
If you want to do what's right, buy a 3.3V Arduino board.
There are a lot of troubles with the BME280 and BMP280 libraries from Adafruit lately. I tried the Adafruit BME280 library and got too much troubles, so I had to change to another library as well.