The MAX7219 has 8 data register to write to that each control the on/off state of 8 LEDs.
If you write data of 0b11111111 to address 1, that will turn on a column of LEDs.
If you write data of 0b00000000 to address 1, all LEDs in that column will be off.
So if you write 0b11111111 and 0b11111110, say every 2mS, then the 1 LED that is changing will be look to be dimmer than the 7 that are not.
So you can use "blink without delay" style code to watch for the passage of 2mS, and turn on/off the LEDs that you want dimmer. If you want multiple brightness levels, them maybe 2mS on and 4mS off, or 6mS off. You can play with different times & ratios to achieve the look you want.
Need to keep in mind that the MAX7219 is also multipexing at 800 Hz, so a column is only on for 1.25mS, and then off for 8.75mS (times not confirmed, but derived from statements in the datasheet) and you have no way to sync up with that.