Since double and float represent the same data type (usually), which is preferable?
See avr-gcc


  Deviations from the Standard
  
  double
  
  double is only 32 bits wide and implemented in the same way as float





  when writing code for ATMega based boards ...


They are the same, therefore.



(Edited to add)


  When writing code, is it then preferable to using one over the other?


I don't really understand your question. You asked about writing code for the ATMega based boards. Do you really mean, if you are writing code for the Due? The quick answer would be, on the Due, double takes twice the RAM, however it is over twice as precise - around 7.2 decimal digits for float compared to 15.9 for double. (I'm not sure about the speed, probably double would be slower, unless it is implemented in floating-point hardware - however I cannot see any reference to that on the AT91SAM3X8E datasheet).

See: https://en.wikipedia.org/wiki/Floating_point

If you want more precision (however slower and taking more RAM) then you could use double - which won't make any difference on the ATmega based boards, but will on the Due.



As Edgar Bonet said:


  I would use float so that anyone reading my code, who may not know about the non-standard AVR double, knows what precision to expect.


That makes quite a bit of sense.



I warn you though that "preferable" is subjective. It is close to asking "what is best"? To which the reply is: "best for what?"