Why do some PCB designers put pull-up resistors on pins where there is already an internal pull-up?
Because the pull-up/down may not be active in some operating modes
Pull-ups by their nature can cause a continuous current draw if the input is at 0V.  This is undesirable in a low-power shutdown, so they may be disabled when the device is powered down.  Other devices (especially microcontrollers) may be configurable for whether an input pulls up or down, and typically by default will start high-impedance.  In both these cases, an external pull-up/down may be needed instead to ensure lines start off in the correct state.
Because the pins may also do other things
Some pins on some devices may have multiple purposes.  I am currently using a microcontroller where the state of some pins is read at startup to tell the micro what memory addressing to use.  The pins may then be used as general I/O, which may include pull-ups/downs.  We have weak external pull-ups/downs to get the initial state we want, and the pins are then used normally with the stronger internal pull-ups/downs giving the desired I/O behaviour.
Because an internal pull-up/down may not be the resistance you want/need
Check the datasheet for your device.  If you've got even 10% tolerance on your internal pull-ups/downs, that's unusually good for internals.  Of course for a regular resistor though, that's pretty bad.  If your design requires an accurate resistance - for example, if it feeds an ADC - then you need something better, and you're going to want a discrete resistor.
Alternatively your application may need a stronger or weaker pull-up than the I/O pin gives you, depending on what's on the other end. Commenters have seen this in various applications.
I've also seen this myself where the pull-up in conjunction with an external capacitor formed a low-pass filter with a cut-off at an inconvenient frequency. Again, an external pull-up was needed to set the correct cut-off. Sure, the capacitor could have been changed instead, but small value caps have their own issues, and production methods mean you want to restrict the number of unique components if you're having them made by a pick-and-place machine.
(Thanks for input from commenters to improve this.)