why do low pass and high pass filters generate a phase shift?
Because they need a certain time delay in order to "decide" what the output should look like if the output changes a lot. Imagine you see a number series and your brain has to decide what the mean value of these number series is. You will need to look at several numbers to arrive at some reasonable conclusion (let's assume the numbers are represented by a noise distribution with the same mean). The same applies to filters that weigh signal values to arrive at the filtered output signal. 

Any filter that does not employ prediction of output will have phase shift. The only way to get rid of phase shift completely (or keep it to fractions of dB) is to use a predictive filter - for example kalman filter. Such a filter, in the simplest form will estimate the derivative of the signal and use that to filter the original signal in a predictive fashion. If you have a model of your signal you can do even better. Since prediction and sensor measurements can be processed in the same time step, from a discrete time point of view you can have zero phase shift if prediction is able to estimate the original signal precisely.