What the rest of Rcpp does is relevant:
1: Rcpp maps standard types (int, long, double, Eigen::Matrix, etc...) to R types. We have things like Eigen::Matrix that Rcpp does not map for us because they are not a type.
2: Rcpp also has some functionality to take a function written in C++ and expose it to R so that at the R prompt you can call your C++ function as if it were an R function. That means Rcpp figures out what the argument types should be in R, how they should be converted to the correct C++ types, what the C++ return type is, how it should be converted to an R type, and what sort of extern-marked function it needs to create as a wrapper to your C++ function.
You are conflating these two things and we need them both for calling Stan functions from R. If we do a little code generation to generate all-doubles functions or instantiate the templates with doubles to get a real type then we are making #1 possible. If you make #1 possible you get #2 for free. If we don't do this then every time somebody wants to test a Stan function in R they have to either write boilerplate c++ (where we waste time or loose potential users) or do some hack like
expose_stan_functions. The lack of namespace support is a side issue with Rcpp that could be fixed if somebody had the time to do it.