A lot of I2C device datasheets state the device supports both 100kHz and 400kHz I2C speed. I would expect they say "up to 400kHz" instead. Or is there a possible hidden catch? Such as due to spike filters the device works around 400kHz and around 100kHz (possible using another set of filters) but may fail at say 231kHz bus speed? Or when bus speed is unstable?
TWI (aka I2C) bus speed is equal to SCL frequency whose value is strictly regulated by the following equation:
Therefore, a desired speed could only be established subject to the matching (achievable) values of the three variables present in the equation.
GolamMostafa showed you an excerpt of an AVR datasheet, so it's answer is correct for AVR based Arduinos (UNO, Mega2560, Leonardo, etc.). But that's only the Arduino side anyway. To answer your question: The speed if most often the upper limit the device supports. But don't get fooled into believing that you can use any lower speed for any I2C device. There are many devices that won't work if you choose a too low speed (p.e. 100Hz).
What's your intention to ask for other speeds?
The 100 kHz was the standard speed. The 400 kHz is officially another standard called "Fast Mode", but it uses the same protocol as the 100 kHz. Some say that "Fast Mode" is 400 kHz, others say that "Fast Mode" is up to 400 kHz.
As far as I know, there is not a single I2C device that can do 100 kHz and 400 kHz and not something in between. That would be very silly. So it is "up to 400 kHz" and there is no hidden catch.
You can try this MultiSpeed I2C Scanner with a basic (AVR) Arduino boards to check if your bus can do 400 kHz and some more.