It's inefficient, the higher charge current (even if it's in pulses) will cause more heating than the true average current being sent to the battery, the term is called I^2R losses because in a given resistance power dissipated goes up with the square of the current, The battery chemistry only ever sees the peak currents not the average current, also if the peak voltage it's receiving are too high it will kill the battery over time from sulfation. This can be partially solved by a good filter including a choke (inductor) and a large capacitor, but the voltages and currents you're talking about the filter components are going to be very large unless the PWM frequency is high. The higher you can get the PWM frequency the better and easier it will be to filter, pick a good FET and drive circuitry and you could PWM at 100khz or more, that becomes a lot more practical to filter at those currents.
I'm a little wary of the scope of the project you're taking on though as you said the curents are going to be as high as 20 amps, is that what you asume the average will be or the peak? If 20amps is the average then the peak is going to be large very hard to design for without a lot more details. you really need to flesh out your design a LOT more there are many things that need to be taken into account that we're just speculating on here without a LOT more details from PICMICRO.