Correct way to add language switcher to a menu
It's not strange it's a question of order.
You use theme_preprocess_page and module_preprocess_page.
theme_preprocess_page runs first, this mean you save your menu before you change it.
Easy option would be, to add your theme_preprocess_page part to your module_preprocess_page.
(Set it outside of the if(drupal_multilingual()) {} and it run even if the if return false)
Better option would be to create a module for your mobile menu,
and set it's weight so it run after your other module.  

EDIT: Ignore the Part about the order this https://www.drupal.org/node/223430  confussed me so i thought about template_preprocess_hook not the theme_preprocess_hook.
The Problem is your call, you think you add the switcher to the menu. But you just add temp items. On your call for mobile you get the original  Menu (so no lang switch).
You could fix it by adding the lang fix to the menu and not temp.
You could extend your module so you would get the new Menu for your vars.