Faster block times are convenient for users because they both reduce both the time typically taken for an initial confirmation and the time necessary to be reasonably confident that the transaction won't be reversed in a reorg.
However, fast block times also increase the number of which become orphans (or in Ethereum "uncles") because the network did not get them in time to build on top of them before they got another, competing block. Having a block orphaned costs a miner money, and it's more profitable if they can avoid it. Increasing the proportion of blocks that are orphaned can create an incentive for miners to centralize into larger pools, which is considered harmful to the security of the network. See more about this here. Ethereum partly offsets this effect by rewarding miners whose blocks are orphaned, with a reward for "uncles" of the winning blocks. However, this does not eliminate this effect entirely.
The 15 second number is chosen as a trade-off between these conflicting considerations.
The appropriate settings for a private network will depend on the situation. In some setups miners are compensated in the same way as they are in a normal public one, in which case the same considerations apply. But in others mining is paid for by some other mechanism, and the block rewards aren't important. In the latter case you don't need to worry about centralization incentives, so you can make blocks faster. Also, if you are designing your own private network, you may be able to ensure better connectivity than that expected on a public network, which will also allow you to use faster confirmation times. However, if you go too far in this direction you will simply end up creating very high proportions of orphaned blocks, which is unhelpful for performance.