We are not sure what the reason might be. Just like any .NET control, there should be no difference between declaring a tooltip on the page or creating it programmatically.
The tooltip does not require anything specific (except having a ScriptManager on the page, of course).
As long as you set a correct TargetControlID that resolves to an existing element ID on the client browser, the tooltip should work fine. In case the tooltip is not able to find such an ID on the client, nothing happens (like in your case).
This could appear in the case of using Repeaters or other INamingContainers that modify the element's ID.
In case you are not able to resolve the issue by yourself using the provided information, please send us a simple project that demonstrates the problem and we will get back to you with a solution/suggestion.
the Telerik team