Actually work the same if you have a mod that make every projectile bounce indefinitely (or at least till it hits a player but ripping projectiles won't disappear after than though).
You keep bringing this up as an example or comparison to this situation, but I don't think you're actually aware of how these work in core MM8BDM. So I'll help you out here and break the code down to show why this isn't a valid comparison.
actor MegaBallKicked
{
PROJECTILE
+HEXENBOUNCE
-NOGRAVITY
+FORCEXYBILLBOARD
+BOUNCEONACTORS
scale 2.5
height 16
radius 16
damage(30)
bouncecount 10
bouncefactor 0.9
wallbouncefactor 0.9
Gravity 0.50
speed 40
seesound "weapon/megaball"
damagetype "MegaBall"
Obituary "$OB_MEGABALL"So meet Mega Ball, it's your standard run of the mill gravity affected bouncing projectile. You see, core MM8BDM has fail safes already put into play for the case of this projectile not dying on walls. Going down the list, there's set values and flags which dictate how the projectile act.
PROJECTILE - This gives you standard projectile flags, the whole go through rails and stuff.
+HEXENBOUNCE - This dictates the style of bouncing that this projectile undergoes.
+FORCEXYBILLBOARD - This is irrelevant for the point but this makes it so that it actually appears from the top, a ball shape.
+BOUNCEONACTORS - This gives Mega Ball its defining characteristic of bouncing off of players.
scale 2.5 - This simply just upscales the sprite to be player-sized.
height 16 - Sets the height of the projectile.
radius 16 - Sets the radius of the projectile, so half of a circle
damage(30) - Self-explanatory enough, makes it do 30 damage.
bouncecount 10 - This is where the fail safe comes in, this projectile will always stop after 10 bounces, meaning it doesn't go forever.
bouncefactor 0.9 - This says that every time Mega Ball bounces, it gets just a bit slower.
wallbouncefactor 0.9 - Same as above, except explicitly for walls.
Gravity 0.50 - This sets the gravity scale.
speed 40 - Simple enough again, just sets the speed to 40.
seesound "weapon/megaball" - This says that every time Mega Ball bounces, it'll play the sound "weapon/megaball."
damagetype "MegaBall" - This sets a special damagetype that hurt players will go into when hurt.
Obituary "$OB_MEGABALL" - Finally, this is just the message that plays whenever a player is killed by this weapon.
As you can see, there's plenty of checks put into all weapons of core to ensure this type of projectile immortality doesn't happen. JC however, had none of this. As many others have said, this wasn't just your simple projectile spam. A player could spectate and keep their projectiles out forever. This didn't just lag out servers, this murdered them. While a simple timer could fix this issue, it's not the best solution. The easier and much more efficient solution to this would just be having the projectiles actually disappear upon spectating. Several hotfixes were released to do this, but they haven't amended everything yet. For example, Galaxy Man still makes levels into nothingness as he flies through out of bounds areas. There's also just various examples of things feeling unpolished, such as Snake Man being forced to jump while using his alt or Aqua Man needing to jump just to use his geyser.