I have Destiny 2 and the Forsaken expansion for PC, but I also like to play it on Xbox One. I have cross save set up, so I can access my character from either console, but I have not bought Forsaken for Xbox One. Would I have to buy Forsaken and/or Shadowkeep for both consoles?
You will be able to use your character on Xbox with all your DLC gear already earned while playing on PC but you will not be able to do any of the DLC activities that you don't own on Xbox.
So you will not be able to do any Forsaken story missions, Last Wish raid, shattered throne dungeon or exotic quests etc on Xbox.
Likewise for Shadowkeep, so no Sundial, Nightmare Hunts, Garden of Salvation raid or Pit of Heresy dungeon.
Basically you will be able to do the free content in New Light only unless you buy the DLC again on your second platform.
Unfortunately, any expansions and season passes do not transfer over when you have cross saved enabled. You will need to purchase them again for each device.
Destiny 2 expansions (ex: Forsaken, Shadowkeep) do not transfer between platforms with Cross Save. Destiny 2 Season Passes (ex: Season of the Undying) do move between platforms on the characters they were redeemed on.*
*Exception: Destiny 2: The Collection on Stadia includes Season Pass access at no additional charge. Players who have Cross Save enabled with their Stadia account who would like to access Seasonal content on other platforms (PlayStation, Xbox, and Steam) will need to purchase those Season Passes directly on one of those platforms.