This is just my take on it.
Although, they are not the same, for executing a piece of code periodically, you can consider them similar.
The main difference comes when Android runs low on resources and decides to kill your service. Using StartServiceAt will allow your service to be invoked again, but if you use a timer, and your service gets killed, it will not start again, and moreover you will not know what state it died in.