Why does a 1D convolution increase the size of the output, while a 2D convolution tends to decrease (such as in a CNN?) The function np.convolve is a 1D convolution (e.g. when both inputs are 1D). It results in a larger output size.
>>> import numpy as np
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> np.convolve(a,b)
array([ 4, 13, 28, 27, 18])

However typically in CNNs, each convolution layer reduces the size of the incoming image. What causes this distinction between 2D and 1D convolutions?

From the documentation of np.convolve: "mode{‘full’, ‘valid’, ‘same’}, optional By default, mode is ‘full’. This returns the convolution at each point of overlap, with an output shape of (N+M-1,). At the end-points of the convolution, the signals do not overlap completely, and boundary effects may be seen."
By contrast, whatever neural network library you're using does not have this behavior as the default.
