You are only partly correct. Yes ATC where there is one will instruct which runway to use. The pilot has absolute discretion in whether or not to accept that instruction. If the pilot considers it unsafe he or she can elect to use another, and ATC must (eventually) comply.
The amount of consequent paperwork and general brown stuff that follows is a very strong deterrent, but the pilot in command always has the final say.
Large commercial jets, being fast and heavy, are mostly immune from danger from downwind and crosswind landings, except in really bad conditions. The smaller the aircraft, the less immune to weather conditions, the limits to the ability of the aircraft to cope with such are defined in the POH (pilots operating handbook) of the type.
ATC will base the decision on Runway in Use on the wind direction at the start of the shift. If the wind direction reverses, as it can, they are not so quick to reverse the runway in use, particularly at a busy international airport, as it totally disrupts the traffic patterns. They might continue with a 20knot tailwind...ok for an A380, not such fun for a small commuter jet, and potentially deadly for some light aircraft. If the pilot opts for an opposite landing he may well have to hold for a very long time until a break in traffic permits......unless he declares an emergency, e.g low fuel. Even more paperwork and brown stuff!