This is ridiculously unnecessary, and very confusing for new team members and devops. Hostnames should be descriptive and help describe the machine's location and responsibility in the network topology. Like webserver01a (nginx, first machine in LB, us-east1a).
Sure it's not cutesy as "pikachu" or "bobasaur", but it will sure make your nagios/copperegg dashboard make lot more sense. And when shit hits the fan you won't think your servers are cute, despite their clever names.
I (somewhat) disagree. Every machine should have a unique hostname that has nothing to do with its function. It should be in DNS and should be the name you use to remotely manage it. Descriptive names should also be assigned in DNS as functions are assigned to the device (either as additional A/AAAA records or CNAMEs). This is flexible and scales well.
Many years ago, I originally assigned descriptive names to machines as I deployed them, but this didn't scale well as we wanted to move services (and their related hostames) to other machines. So I started assigning unique names to machines, using famous figures born on the day of configuration (as in http://en.wikipedia.org/wiki/October_12#Births). That was 'cute' for a while, but now I just generate random 4-letter words and pick the ones I like. The namespace is large enough for my purposes, the names are short enough for easy typing (ssh fang), and everything aligns nicely in text (zone files, inventory, etc.). In some cases, I've even replaced descriptive names with TXT records in DNS associated with the unique name.
Sure it's not cutesy as "pikachu" or "bobasaur", but it will sure make your nagios/copperegg dashboard make lot more sense. And when shit hits the fan you won't think your servers are cute, despite their clever names.