Miners pick transactions from the mempool which is the queue of unconfirmed transactions. When there are fewer transactions waiting than would fit into a block, the block will not be full. The miner could create more transactions themselves, but that would be only useful if they wanted to send one themselves already in the first place, otherwise they'd just be paying themselves to include useless data.
So, why are so few transactions waiting to be confirmed sometimes? The traffic in the Bitcoin network appears to have both a daily and a weekly cycle. It tends to start picking up when Europe's business day starts, and slows down a bit when the US West Coast goes home from work. Weekends tend to have less traffic altogether. Of course that is overlaid by greater trends in Bitcoin, so demand will surge during price rallies for example.
Mempool Visualization of last seven days via jochen-hoenicke.de
Additionally, the block production is probabilistic. Blocks come in random intervals roughly ten minutes in average, but that'll mean that sometimes there may be three blocks in one minute and the queue gets flushed, or no block for an hour and the queue builds.
UTXO Set Size over past year via statoshi.info
In the end, network participants should ensure that the queue doesn't flush completely. When there is little demand for blockspace, users could be consolidating their tiny pieces of Bitcoin: the unspent transaction output set grew from 50M to 64M in the past year. In a perfect world, we'd always have a backlog of consolidation transactions that we could chew through when no other transactions are waiting.