The one word solution for you can possibly be: "Calibration".
The ball maze game works perfectly because beta/gamma orientations (Gyro sensors) are calibrated at 0,0,0. When you tilt, they change. When you hold it landscape, it obviously have a big value in either alpha/beta/gamma (most likely alpha?).
First thing: You must display the round(alpha), round(beta), etc. values on screen throughout to be able to visualize what's happening when you tilt. I hope you're doing it already? If not, I can't believe you.
To make things static when phone is held landscape (i.e. to have 0,0,0 at that position/orientation), you need to subtract that amount of tilt you've done. That's called calibration.
For that, you need three orientation variables (instead of using alpha, beta, gamma directly). Lets say you call one of them alpha_var, which is initially 0. Now, Every tick: alpha_var set to alpha_var + Touch.Alpha. And before starting the actual game, you must show a button "Calibrate". Once clicked, it should subtract all orientation values from those variables to make them all zero. And then use those variables as orientations (just like your maze game) because now, they become 0, 0, 0, on landscape (after calibration), just like previously 0, 0, 0 was on laying flat.