Achievements can be earned in creative mode by editing the level.dat file
If you open up the level.dat file of any world file, you can edit many aspects of the world. However, setting the "hasBeenLoadedInCreative" and "commandsEnabled" values to false allows the world to have achievements earnable while the player is in creative!!!
(I already created a bug report on this before, but it got marked invalid as I mentioned using a 3rd party world editor makes it easier)