How can I return a different number of results per page for a view if a user is accessing the site with a mobile device?
You could use Browscap module along with Browscap Block which would add the visibility of blocks depending on device. Next you could add two blocks one for Normal screen and one for mobile devices. 


  Browscap Block
  
  Browscap Block adds visibility options to block configuration settings
  to allow you hide or show blocks in mobile devices.


If you do not want to create multiple views then you could use the browscap function in your template file to detect the browser and then restrict the number of items displayed. The function would be browscap_get_browser() 

This could either be done in hook_views_pre_build function or with in the Style output template file where it loops through the $rows array. you could restrict it the number to 8 depending on the device by exiting the loop once you reach the required count.