This, "However, philosophically - the first approach is the only approach.", and this "The proper official RESTful approach is to use Accept: header." are widely perceived to be the case, but are also absolutely incorrect.
Here's a brief snippet from Roy Fielding (who defined REST)...
"section 6.2.1 does not say that content negotiation should be
used all the time." cite
That particular conversation is in the context of the 'Accept-Language:' header, but the same applies equally to the 'Accept:' header, as made clear later in his response...
"I have no idea why people can't see
the second and third link on the top page
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
that point to the two PDF editions."
What he means there is that there's no issue in using different endpoints for different representations of the same source data. (In this case one .html endpoint and two different .pdf endpoints.)
Also in a similar discussion, this time regarding the virtues of using query parameters vs. using file extensions for different media types...
"That's why I always prefer extensions.
Neither choice has anything to do with REST." cite
Again, that's slightly different to Accept vs. filename extensions, but Fielding's stance is still clear.
Answer - it really doesn't much matter.
The trade-offs between the two aren't very significant and both are acceptable styles.