World.setBiome() and World.getBiome() only perform the expected function on locations in loaded chunks.
Call setBiome() on a column in an unloaded chunk and nothing happens.
Call getBiome() on a column in an unloaded chunk and the function returns the original biome of that column.
For example, the original biome of a column as generated in a fresh world is PLAINS. I change the biome to FOREST manually and verify that the biome has changed and been saved in the region file. I restart the server so the column is no longer loaded (it's far from spawn). I call getBiome() on the column and receive PLAINS. I log back into the server, stand next to the column and call getBiome() and receive FOREST. Presumably getBiome() is regenerating the chunk if it's not loaded, and returning the biome information from that regenerated chunk (instead of loading it).
N.B. World.loadChunk() on the chunk containing the column in question before calling get/setBiome() also results in correct behaviour.