I think it's more a compression scheme than an encryption one, but it does the same thing, it prevents someone from directly messing into the code.
Here's what the game does when starting : it boots at 0x02000800, then it initializes the system, and it starts rewrite itself from the end, so this way it doesn't rewrite something that will be read I guess. Anyways, after the first routine has started the game takes the whole first part of ram as if the arm9 was normally loaded. The compression scheme looks like bmp rle compression....it's not plain old lzss because of the strange backward writing.
The gamedev have used c++ to code their game, so it looks like either a clever homedev has made the encryption system, or a third party has started to sell this... I don't know.
I don't really see the point of this... it won't stop anything, it just take 10 seconds more to get the binary (run the emu and dump memory). What where they thinking ? >_<