Anytime you introduce data the user could have entered directly into a SQL query, you must be aware of the possibility of attack. For example, if you use a user's City profile property in a query
SELECT * FROM mystore_Locations WHERE City = '[User:City]'
If the "City" profile property is not correctly sanitized, a user could enter the following as their City:
'; UPDATE dnn_Users SET IsSuperUser = 1 WHERE UserId = 1234; SELECT '
Which would change the script above to:
SELECT * FROM mystore_Locations WHERE City = ''; UPDATE dnn_Users SET IsSuperUser = 1 WHERE UserId = 1234; SELECT ''
(I'm working somewhat from memory, so the exact database fields may not be correct, but I hope you get the idea).
The point is not that TokenReplace is accessing the database, it's that you could be introducing user editable fields directly into the SQL query used by the Reports Module. Even if TokenReplace or the Reports Module itself did some checking to remove SQL commands from those strings, I would not feel comfortable using it as there are just so many different SQL Injection attack vectors. Especially not when SQL Server has a parameter model designed explicitly to avoid this problem.
As I said, it all depends on what data you are retrieving from TokenReplace, which is why I don't have a problem with people making the change themselves, but they must be aware of the potential problems if they use data entered by regular users.