I was trying out a datapack that would keep the spawners data when broken with silk touch, and before I finished testing it out and working out any issues I noticed that while it would keep it's custom data when broken, if you placed it down in survival it placed as a default pig spawner instead of with the custom data. I tried it a few times and no matter what in survival this happens, but as soon as you place a spawner with data in creative all works fine. Seems somewhat intentional however this is disappointing if so because that kinda removes map making and datapack potential.
Yes, that appears to be intended, see MC-105216.