Execution plan vs STATISTICS IO order
My initial playing around with various queries suggested no pattern at all but on paying closer attention it appears to be predictable for serial plans. I ended up at KB314648 which @AustinZellner mentions:


  Each SQL Server connection has an associated process status structure
  (PSS) that maintains connection-specific state information. Each
  unique server process ID (SPID) in the sysprocesses system table
  represents a different PSS, and the information in the sysprocesses
  virtual table is a "view" into this status information.


And the section relevant to your question:


  If STATISTICS IO is enabled for a connection, SQL Server allocates an
  array during query execution to track IO information on a per-table
  basis. As SQL Server processes the query, it records each logical
  request for a page in the appropriate table's entry in this array,
  along with whether that logical IO request resulted in a physical IO.
  SQL Server returns the information, at the end of the query, in error
  message 3615.


The observed behaviour suggests that entries are made to the array in the order that IO is generated, essentially the result of GetNext() on a physical operator. The last entry in the statistics output is the first table that resulted in an IO being recorded, the first entry is the last table. I’d speculate that the order for parallel plans is not predictable (or less so) as there is no guarantee as to which parallel task will be scheduled first.