It really depends. I work on a project where we have over 30K resource entries and that is really unmanageable for us. Far better to use a custom resource provider and store them in the application db (for OUR application).
If you do choose to use your own resource implementation, you can use your own xml files but I would strongly suggest writing your own resource providers. Then you're still using the .NET mechanism but are switching out the storage.
It does depend on your application and for ours its proving necessary. Not least of which because we need to let the user override language settings but then reset to the default provided version.
Update:
As per the comment question, here is a link to more info:
http://msdn.microsoft.com/en-us/library/aa905797.aspx