In Gen 2-4, Struggle is boosted by the Silk Scarf (and Pink Bow/Polkadot Bow in Gen 2). It probably won't have any effect on competitive battling, but it should probably still be implemented for the sake of accuracy.
Gen 2
In Gen 2, the type-based boosts are done in the damage calculation function.
https://github.com/pret/pokecrystal/blob/06ec23ccee71ad25bfa0779d66270bd53f48ffce/engine/battle/effect_commands.asm#L2984-L2990
Unlike with the type effectiveness function (mis-labeled as STAB - this function does all of type effectiveness), the actual damage calculation does not check that the move is Struggle for applying item boosts.
https://github.com/pret/pokecrystal/blob/06ec23ccee71ad25bfa0779d66270bd53f48ffce/engine/battle/effect_commands.asm#L1214-L1219
Struggle is still coded as a Normal type move, however! In fact, it has the same effect as any other recoil-inducing move (like Take Down), except that the game is hardcoded to disable type effectiveness if Struggle is being calced.
https://github.com/pret/pokecrystal/blob/06ec23ccee71ad25bfa0779d66270bd53f48ffce/data/moves/moves.asm#L181
This was tested in Gen 2. I made a YouTube video about this (and how typeless damage actually works in Gen 2):
https://www.youtube.com/watch?v=2Z7o4RQDtzU
Gen 3
Like in Gen 2, Struggle is technically coded as a Normal type move that inflicts recoil (like Take Down).
https://github.com/pret/pokeemerald/blob/c2dcc629fd97b3d58fedc07c9e02653eabed9136/src/data/battle_moves.h#L2148-L2158
Like in Gen 2, Struggle skips type effectiveness with a hardcoded check.
https://github.com/pret/pokeemerald/blob/c2dcc629fd97b3d58fedc07c9e02653eabed9136/src/battle_script_commands.c#L1542-L1543
https://github.com/pret/pokeemerald/blob/c2dcc629fd97b3d58fedc07c9e02653eabed9136/src/battle_script_commands.c#L1360-L1364
Like in Gen 2, damage calculation does not check that the move is Struggle for applying item boosts.
https://github.com/pret/pokeemerald/blob/c2dcc629fd97b3d58fedc07c9e02653eabed9136/src/pokemon.c#L3170-L3182
I also tested Struggle in Gen 3 with an Abra that cannot OHKO Roxanne's Nosepass without a crit (but could if Struggle was boosted by the Silk Scarf).
Gen 4
Like in Gen 2-3, damage calculation does not check that the move is Struggle for applying item boosts.
https://github.com/pret/pokeheartgold/blob/ad7a3afa0cfc144fe6837c410cb95b2727217f54/src/battle/overlay_12_0224E4FC.c#L5635-L5640
Unfortunately this decomp is incomplete, so I don't have any hard proof that Struggle is coded as a Normal type move (though when I hacked Struggle in as a move on a Pokémon's moveset with PkHex, it did appear to be a Normal type move). It also seems in Gen 4+, they also do give it a separate effect index besides just being a recoil move, though it didn't seem to matter here.
However, I did test Struggle in Gen 4 with an Abra that cannot OHKO Falkner's Pidgeotto without a crit (but could with Pound with the Silk Scarf - damage calc screenshot is from AxewKairiSora on Discord).
Gen 5?
This does not seem to be the case anymore...
This is a screenshot and quote from Salamence on Discord:
struggle is not boosted by silk scarf in gen 5. unlike previous generations
Lvl 53 0 Atk Magikarp Struggle vs. Lvl 14 0 HP 12 IVs / 0 Def 12 IVs Panpour: 32-38 (82 - 97.4%) -- guaranteed 2HKO
Lvl 53 0 Atk Silk Scarf Magikarp Tackle vs. Lvl 14 0 HP 12 IVs / 0 Def 12 IVs Panpour: 39-46 (100 - 117.9%) -- guaranteed OHKO
So it seems it's just Gen 2-4 where this quirk exists. Unless it was re-added in later generations, but Gen 2-3 have solid evidence through decomps, and Gen 4 has some evidence and a screenshot of it occurring.
In Gen 2-4, Struggle is boosted by the Silk Scarf (and Pink Bow/Polkadot Bow in Gen 2). It probably won't have any effect on competitive battling, but it should probably still be implemented for the sake of accuracy.
Gen 2
In Gen 2, the type-based boosts are done in the damage calculation function.
https://github.com/pret/pokecrystal/blob/06ec23ccee71ad25bfa0779d66270bd53f48ffce/engine/battle/effect_commands.asm#L2984-L2990
Unlike with the type effectiveness function (mis-labeled as STAB - this function does all of type effectiveness), the actual damage calculation does not check that the move is Struggle for applying item boosts.
https://github.com/pret/pokecrystal/blob/06ec23ccee71ad25bfa0779d66270bd53f48ffce/engine/battle/effect_commands.asm#L1214-L1219
Struggle is still coded as a Normal type move, however! In fact, it has the same effect as any other recoil-inducing move (like Take Down), except that the game is hardcoded to disable type effectiveness if Struggle is being calced.
https://github.com/pret/pokecrystal/blob/06ec23ccee71ad25bfa0779d66270bd53f48ffce/data/moves/moves.asm#L181
This was tested in Gen 2. I made a YouTube video about this (and how typeless damage actually works in Gen 2):
https://www.youtube.com/watch?v=2Z7o4RQDtzU
Gen 3
Like in Gen 2, Struggle is technically coded as a Normal type move that inflicts recoil (like Take Down).
https://github.com/pret/pokeemerald/blob/c2dcc629fd97b3d58fedc07c9e02653eabed9136/src/data/battle_moves.h#L2148-L2158
Like in Gen 2, Struggle skips type effectiveness with a hardcoded check.
https://github.com/pret/pokeemerald/blob/c2dcc629fd97b3d58fedc07c9e02653eabed9136/src/battle_script_commands.c#L1542-L1543
https://github.com/pret/pokeemerald/blob/c2dcc629fd97b3d58fedc07c9e02653eabed9136/src/battle_script_commands.c#L1360-L1364
Like in Gen 2, damage calculation does not check that the move is Struggle for applying item boosts.
https://github.com/pret/pokeemerald/blob/c2dcc629fd97b3d58fedc07c9e02653eabed9136/src/pokemon.c#L3170-L3182
I also tested Struggle in Gen 3 with an Abra that cannot OHKO Roxanne's Nosepass without a crit (but could if Struggle was boosted by the Silk Scarf).
Gen 4
Like in Gen 2-3, damage calculation does not check that the move is Struggle for applying item boosts.
https://github.com/pret/pokeheartgold/blob/ad7a3afa0cfc144fe6837c410cb95b2727217f54/src/battle/overlay_12_0224E4FC.c#L5635-L5640
Unfortunately this decomp is incomplete, so I don't have any hard proof that Struggle is coded as a Normal type move (though when I hacked Struggle in as a move on a Pokémon's moveset with PkHex, it did appear to be a Normal type move). It also seems in Gen 4+, they also do give it a separate effect index besides just being a recoil move, though it didn't seem to matter here.
However, I did test Struggle in Gen 4 with an Abra that cannot OHKO Falkner's Pidgeotto without a crit (but could with Pound with the Silk Scarf - damage calc screenshot is from AxewKairiSora on Discord).
Gen 5?
This does not seem to be the case anymore...
This is a screenshot and quote from Salamence on Discord:
So it seems it's just Gen 2-4 where this quirk exists. Unless it was re-added in later generations, but Gen 2-3 have solid evidence through decomps, and Gen 4 has some evidence and a screenshot of it occurring.