A copy of Pokemon Emerald is required to get Teddiursa in Pokemon Diamond. By having a copy of Pokemon Emerald in the GBA slot of the DS Teddiursa will start to appear in Route 211 and Acuity Lakefront.
You cannot catch Teddiursa in Pokémon HeartGold. Teddiursa is only available for capture in SoulSilver, along Route 45 or in Mt. Silver. You have to trade. Teddiursa is on Gold and SoulSilver. Phanpy is on Silver and HeartGold.
neither of them is better, they are both the same, but in diamond, you catch dialga, and in pearl, you catch palkia, and you can catch different Pokemon in each game for example: you can catch this Pokemon in diamond, but not pearl but: you can catch this different Pokemon in pearl, but not diamond