Il n'y a aucun moyen dans Rails de spécifier la position d'une colonne. En fait, je pense que ce n'est qu'une coïncidence (et qu'il ne faut donc pas s'y fier) que les colonnes soient créées dans l'ordre où elles sont nommées dans une migration.
L'ordre des colonnes dans une table est presque pertinent et devrait l'être : la "raison" couramment invoquée est de pouvoir voir un sous-ensemble particulier lors de l'exécution d'un "SELECT *", mais ce n'est vraiment pas une bonne raison.
Toute autre raison est probablement une odeur de design, mais j'aimerais bien connaître une raison valable pour laquelle je me trompe !
Sur certaines plates-formes, il y a un (minuscule) gain d'espace et de performance à obtenir en mettant les colonnes avec la plus grande probabilité d'être NULL à la fin (parce que le DMBS n'utilisera pas d'espace disque pour les valeurs NULL "traînantes", mais je pense qu'il faut être sur du matériel des années 1980 pour le remarquer.