Dan is correct, more on this:
ArcGIS should allow the ability to permanently reorder fields in a table
In arcpy the best way to do this is to create an arcpy FieldMappings object and use it with the Table to Table or Feature Class to Feature Class tool to make a new copy of the table with the order and field names you want. It's a little challenging but it does work. Going the numpy table route is Dan's go-to approach, I am less handy with numpy and pandas than he is. The numpy route is probably faster, but less scalable than using a field mapping inside the arcpy cocoon.
Note, I should say in ModelBuilder you could create a field map using the Calculate Value tool, using an arcpy function to do the work of creating the field map, return the string representation and pass it to the tool that needs it.
This seems to be a common use case so I should write a blog post about it sometime.